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.
Нет API-ключа?
Войдите в аккаунт, чтобы создавать и управлять 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.