Structured web data
for your next integration.

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.

curl — authenticated extraction
# 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)" }
    ]
  }
}
50
trial requests
500/mo
after email verification
No card
required to start
10/hr
extraction rate limit per IP

From URL to JSON in three steps

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.

1

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
2

Start free — no card

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 ↓
3

Run your first extraction

Load EXTRACTAPI_KEY from your environment and use the cURL, Node, or Python quickstart.

Open copyable examples →

Need help with your first request? Email support — include the request ID and sanitized error, never your API key or target page contents.

Example output — sample data

Explore a sanitized, synthetic response shape before you create a key. Switch views or copy valid JSON; no live extraction request is made.

Fixture explorer · synthetic data

A fictional product page used to demonstrate the fields returned by the API.

Sample metadata is ready.

          
Fixture only — no target URL is requested.

What you get

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.

🔄

Full browser rendering

Authenticated API requests can render JavaScript in a bounded browser session before extraction. Private, unsafe, or target-blocked pages remain unavailable.

📦

Structured output

Title, meta, Open Graph, headings, main content, JSON-LD, canonical URL, page stats. Or use a custom CSS selector for precise data.

AI-agent ready

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 →

🔌

Batch extraction

Need multiple pages at once? The batch endpoint accepts up to 10 URLs per request and returns one result per input.

📊

Usage tracking

Every API key comes with a real-time stats endpoint. Monitor your usage, check your limits, see recent requests — all through the API.

💰

Pay for what you use

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.

Start with a useful workflow

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.

🤖 AI-agent web extraction Give MCP-compatible agents structured data from public pages, including JavaScript-rendered sites where access is available. See the agent workflow →
⚙️ JavaScript website to JSON Render a client-side app, wait for content, and return the fields your integration needs when the source allows it. Read the rendering guide →
📈 Competitor price inputs Extract product fields for a comparison workflow you operate. The API does not schedule checks or send alerts. See the monitoring workflow →
🏢 Supplier catalogs Turn accessible catalog pages into structured input for your inventory or research tool, subject to source rules.
🏠 Listing research Collect fields from accessible public listing pages and apply your own filtering and storage logic.
📰 Content workflows Extract article metadata, headings, text, and JSON-LD for downstream analysis where publishers permit it.
🔍 Product research Normalize public product pages into JSON for your own comparison or enrichment workflow.
🧩 Integration input Use structured fields as input to an application you own, with your own storage, scheduling, and policy decisions.

Simple, transparent pricing

Plan allowances and prices come from the current configuration. Paid plans bill monthly for included requests; target availability and API limits still apply.

Enable JavaScript to load current plan details. You can still create a free API key and read the quickstart.

A newly issued free key is shown once in this page. Copy or download it before navigating. Need help? Contact support.

API Reference

REST API. JSON everywhere. Get a key above, then use the copyable cURL, Node, or Python quickstart in the documentation.

POST /v1/extract Extract data from a URL
POST /v1/extract/batch Extract up to 10 URLs at once
GET /v1/stats Get usage stats for your key
GET /health Server health check
Request body
{
  "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)
}

Questions?

Everything you need to know about ExtractAPI. If something's missing, just ask.

Is this legal?

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.

How does this compare to ScrapingBee, Browse AI, or Apify?

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.

Do you handle single-page apps and JavaScript?

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.

What happens if a site blocks the request?

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.

Can I cancel anytime?

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.

Is there a free tier?

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.