Choose a public page
Send a public HTTP(S) URL in your first API call. Private, loopback, and unsafe redirect targets are rejected by the API.
POST /v1/extract
Give your agent or integration a public page URL and receive structured metadata, content, headings, and JSON-LD. Authenticated requests can render JavaScript pages before extraction; target availability and site rules still apply.
# Synthetic example target; store your key in EXTRACTAPI_KEY. curl -X POST https://extractapi.app/v1/extract \ -H "Authorization: Bearer $EXTRACTAPI_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com/product/123"}' # Response { "status": "ok", "data": { "title": "UltraWidget Pro", "metaDescription": "A fictional product used in this sample.", "h1": "UltraWidget Pro — sample", "openGraph": { "og:price:amount": "49.99", "og:availability": "in stock" }, "pageStats": { "textLength": 8432, "linkCount": 47, "imageCount": 12 }, "structuredData": [ { "@type": "Product", "name": "UltraWidget Pro (sample)" } ] } }
Start with 50 trial requests, no card. Verify an email later to unlock 500 requests per month. The key is shown once in this browser session.
This credential is held only in this page. Store it as EXTRACTAPI_KEY; never commit it or put it in client-side code. Reloading or leaving this page cannot recover it.
Verification is optional; it unlocks the larger free allowance.
Use the key from your environment in cURL, Node, or Python. These examples use a placeholder URL and never put the key in a link.
curl -X POST https://extractapi.app/v1/extract \
-H "Authorization: Bearer $EXTRACTAPI_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
Explore the browser-only sample output below — it is synthetic fixture data, not a request to a target site. Then run your first request with your own key.
Send a public HTTP(S) URL in your first API call. Private, loopback, and unsafe redirect targets are rejected by the API.
POST /v1/extract
Start with 50 trial requests. Verify an email to unlock 500 requests/month. Your key is shown once, so copy it into your environment.
Get a free API key ↓Load EXTRACTAPI_KEY from your environment and use the cURL, Node, or Python quickstart.
Need help with your first request? Email support — include the request ID and sanitized error, never your API key or target page contents.
Explore a sanitized, synthetic response shape before you create a key. Switch views or copy valid JSON; no live extraction request is made.
A fictional product page used to demonstrate the fields returned by the API.
Build on structured fields from public pages. Browser rendering helps when useful data appears only after JavaScript runs, but target sites can still block or limit automated access.
Authenticated API requests can render JavaScript in a bounded browser session before extraction. Private, unsafe, or target-blocked pages remain unavailable.
Title, meta, Open Graph, headings, main content, JSON-LD, canonical URL, page stats. Or use a custom CSS selector for precise data.
Use the MCP server with Claude, Cursor, Codex, and other compatible agents. Lightweight fetch is free; an API key unlocks the Playwright backend. See the setup →
Need multiple pages at once? The batch endpoint accepts up to 10 URLs per request and returns one result per input.
Every API key comes with a real-time stats endpoint. Monitor your usage, check your limits, see recent requests — all through the API.
Try the free tier first, then choose a monthly Starter or Pro allowance from the current pricing configuration. Limits and reset behavior are documented before checkout.
ExtractAPI is a building block for developers and agents. Use the response in your own pipeline and keep scheduling, storage, and alerts under your control.
Plan allowances and prices come from the current configuration. Paid plans bill monthly for included requests; target availability and API limits still apply.
A newly issued free key is shown once in this page. Copy or download it before navigating. Need help? Contact support.
REST API. JSON everywhere. Get a key above, then use the copyable cURL, Node, or Python quickstart in the documentation.
{
"url": "https://...", // required
"selector": ".product-price", // optional CSS selector
"waitFor": ".loaded", // optional: wait for element
"extractImages": true, // optional: include image data
"extractLinks": true, // optional: include link data
"javascript": true // optional: enable JS (default: true)
}
Everything you need to know about ExtractAPI. If something's missing, just ask.
You provide public URLs that you are allowed to access. Check each target site's terms and robots.txt; private, unsafe, or abusive access is not supported.
ExtractAPI focuses on URL-in / JSON-out for developers who need structured fields from public pages, with browser rendering available through the authenticated API. Compare current capabilities and pricing directly; no universal superiority claim is made here.
JavaScript rendering can expose content that a raw HTTP response does not contain. It does not guarantee success for every SPA, protected page, or site that blocks automated access.
The API rejects unsafe targets and can return a sanitized error when a source blocks or times out. Check the request ID and target permissions; do not retry a blocked site indefinitely.
Paid plans are monthly. Cancellation and the effective end of access are handled through the billing portal and the current subscription terms shown at checkout.
Start with 50 requests and no card. Verify an email to unlock 500 requests per month. If it works for you, pick a paid plan.