extractor.sh

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+Berlin

JavaScript

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.app
  • https://bsky.app/profile/bsky.app/post/3mqcp5qjdfs26
  • https://news.google.com/search?q=Cloudflare&hl=en-US&gl=US&ceid=US%3Aen
  • https://www.instagram.com/instagram/
  • https://mastodon.social/@trwnh/99664077509711321
  • https://store.example/products/black-shirt
  • https://soundcloud.com/forss/flickermood
  • https://open.spotify.com/episode/7makk4oTQel546B0PZlDM5
  • https://www.reddit.com/r/CloudFlare/
  • https://www.tiktok.com/@scout2015/video/6718335390845095173
  • https://vimeo.com/286898202
  • https://x.com/jack/status/20
  • https://www.youtube.com/@Cloudflare

See the JSON schema guide before storing normalized responses.