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.
Try Extract Live
One URL per line. Enter your API key and submit to extract content.
¿No tienes una clave API?
Inicia sesión en tu cuenta para crear y gestionar tus claves API.
Integration guide
Copy a snippet, replace your API key, run. Works in any HTTP client — examples below in cURL, JavaScript, and Python.
/api/extracthttps://www.apipick.comExtract clean readable content from one or more URLs. Removes navigation, ads, and boilerplate. Returns markdown-flavoured text ready for LLM ingestion.
urlsarray<string>required1–25 http(s) URLs
extract_effortstringoptionalauto | low | high
response_lengthstringoptionalshort | 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"
}'{
"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
}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.
30req/min
Per API key, per endpoint. Sliding 60-second window.
3concurrent
Max simultaneous in-flight requests per API key.
X-RateLimit-LimitMaximum requests allowed per minuteX-RateLimit-RemainingRequests remaining in the current windowX-RateLimit-ResetSeconds until the current window resetsRetry-AfterSeconds to wait before retrying (only on 429)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.