Skip to main content
uAPI is a universal data access layer for the web. It turns arbitrary web pages into normalized, schema-aligned JSON with stable field names, ISO 8601 timestamps, and clean value types. You integrate once—via HTTPS or official SDKs—and get consistent output without managing scrapers, proxies, or anti-bot systems.

Start under a minute

Install the SDK, add your API key, call /v1/extract, and read normalized JSON.

What you get on every call

Every endpoint returns the same stable envelope. You always receive: id for correlation and support. success to indicate whether structured data is available. data containing the normalized payload when success is true. error containing a stable code and message when success is false. uapi_version and schema_version for compatibility tracking. request with endpoint, method, parameters, timestamps, status_code, and cache_info. deprecation_warnings as a non-breaking channel for upcoming changes. Billing and usage are handled account-side; your integration logic stays focused on success, data, and error.
Authentication is a single header: X-API-Key. No additional auth headers are required.

Try it now with the SDKs

The fastest way to see uAPI in action is to extract structured data from a public URL using the official clients.
import os
from uapi import uAPI  # provided by the usdk package

client = uAPI(
    api_key=os.environ.get("UAPI_API_KEY"),  # or omit to use UAPI_API_KEY by default
)

response = client.extract(
    url="https://example.com",
)

print(response.to_dict())
Optionally send the x-cache-ttl header (0–3600) to cache successful GET responses for your own key. Caching is isolated per API key; other users cannot affect your cache.

Why teams choose uAPI

Predictable integration: one schema-normalized API across heterogeneous sites, so your downstream models, analytics, and pipelines do not need per-site adapters. Operational clarity: a single envelope with stable fields for logging, monitoring, and debugging. You can build alerts on success, error.code, and request.status_code without chasing special cases. Developer-first tooling: officially supported Python and TypeScript SDKs, typed responses, clear error surfaces, and docs that match real behavior.

Next steps

Go to Quickstart to: Create an API key. Install the SDK for your stack. Make your first /v1/extract and /v1/search calls. Then: Use the Endpoints pages for precise request/response contracts. Read Responses and Types to lock in how you parse the envelope. See Caching to tune x-cache-ttl for your workloads. Review Our Pledge and Support to understand how we handle stability, fairness, and incident response.