[ search · extract ]● 2 cr/url · 30 req/min

URL Content Extraction

Pass one or more URLs, get back clean readable content with navigation and ads stripped. Drops into RAG pipelines, agent scrape-and-summarise flows, or content monitoring jobs.

2 credits / URL30 req / minmax 25 URLs / callPOST /api/extract

Try Extract Live

One URL per line. Enter your API key and submit to extract content.

auth · x-api-key

¿No tienes una clave API?

Inicia sesión en tu cuenta para crear y gestionar tus claves API.

2 URLs · 4 credits total

[ 02 · integrate ]

Integration guide

Copy a snippet, replace your API key, run. Works in any HTTP client — examples below in cURL, JavaScript, and Python.

spec
POST/api/extract
base
https://www.apipick.com

Extract clean readable content from one or more URLs. Removes navigation, ads, and boilerplate. Returns markdown-flavoured text ready for LLM ingestion.

parameters
urlsarray<string>required

1–25 http(s) URLs

extract_effortstringoptional

auto | low | high

response_lengthstringoptional

short | medium | long

curl -X POST "https://www.apipick.com/api/extract" \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
  "urls": [
    "https://en.wikipedia.org/wiki/Retrieval-augmented_generation",
    "https://docs.anthropic.com/claude/docs/intro-to-claude"
  ],
  "extract_effort": "auto"
}'
● 200 · response
{
  "results": [
    {
      "url": "https://en.wikipedia.org/wiki/Retrieval-augmented_generation",
      "title": "Retrieval-augmented generation - Wikipedia",
      "content": "Retrieval-augmented generation (RAG) is a technique…",
      "status": "ok"
    }
  ],
  "result_count": 1,
  "credits_used": 2,
  "remaining_credits": 98
}
[ 03 · limits ]

Rate limits

Throttling is per API key, sliding 60-second window. Hit the limit and you get a clean 429 with a Retry-After header.

request rate

30req/min

Per API key, per endpoint. Sliding 60-second window.

concurrency

3concurrent

Max simultaneous in-flight requests per API key.

response headers
X-RateLimit-LimitMaximum requests allowed per minute
X-RateLimit-RemainingRequests remaining in the current window
X-RateLimit-ResetSeconds until the current window resets
Retry-AfterSeconds to wait before retrying (only on 429)
● 429 · too many requests
HTTP/1.1 429 Too Many Requests
Retry-After: 12
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 12

{
  "error": "rate_limit_exceeded",
  "message": "Rate limit exceeded: 30 requests/minute per API key. Retry after 12s.",
  "retry_after": 12
}

Frequently Asked Questions

How are credits charged?

2 credits per URL submitted. A single call with 5 URLs costs 10 credits. Maximum 25 URLs per call.

What does the response look like?

An array of { url, title, content, status } objects. content is cleaned readable text (markdown-flavoured), with boilerplate removed. Suitable for direct LLM consumption.

Can I control extraction depth?

Pass extract_effort (auto, low, high). 'auto' is the default and works for most pages. 'high' is slower but does a more thorough job on JS-heavy or paywalled-style pages.

What happens if a URL fails?

Failed URLs return status set to an error code in the results array, but the call as a whole succeeds. Credits are charged for all URLs submitted regardless of per-URL outcome.

Is there a tool schema?

GET /api/extract/tool-schema returns OpenAI function and Claude tool use definitions.