Quickstart
Extract your first URL.
Call GET /api/extract with a public page URL and your preferred output format.
Markdown
curl --get 'https://extractor.sh/api/extract' \
--data-urlencode 'url=https://example.com/article' \
--data-urlencode 'format=markdown'A successful request returns a raw text/markdown; charset=utf-8 body.
JSON
curl --get 'https://extractor.sh/api/extract' \
--data-urlencode 'url=https://example.com/article' \
--data-urlencode 'format=json'JSON is the default, so format=json may be omitted.
Search
Use the dedicated GET endpoints when you need to discover webpages, current news, openly licensed images, or named places before extracting a known URL.
GET /api/search?q=AI+web+data
GET /api/news?q=AI+infrastructure
GET /api/images?q=coral+reef
GET /api/places?q=Brandenburg+Gate+BerlinJavaScript
const endpoint = new URL(
'https://extractor.sh/api/extract'
);
endpoint.searchParams.set('url', 'https://example.com/article');
endpoint.searchParams.set('format', 'json');
const response = await fetch(endpoint);
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const result = await response.json();What to submit
Always submit the ordinary public page a person would open in a browser. For example:
https://bsky.app/profile/bsky.apphttps://bsky.app/profile/bsky.app/post/3mqcp5qjdfs26https://news.google.com/search?q=Cloudflare&hl=en-US&gl=US&ceid=US%3Aenhttps://www.instagram.com/instagram/https://mastodon.social/@trwnh/99664077509711321https://store.example/products/black-shirthttps://soundcloud.com/forss/flickermoodhttps://open.spotify.com/episode/7makk4oTQel546B0PZlDM5https://www.reddit.com/r/CloudFlare/https://www.tiktok.com/@scout2015/video/6718335390845095173https://vimeo.com/286898202https://x.com/jack/status/20https://www.youtube.com/@Cloudflare
See the JSON schema guide before storing normalized responses.