webstractor
Developer docs

Quickstart

Extract your first URL.

Call GET /api/extract with a public page URL and your preferred output format.

Markdown

curl --get 'https://webstractor.com/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://webstractor.com/api/extract' \
  --data-urlencode 'url=https://example.com/article' \
  --data-urlencode 'format=json'

JSON is the default, so format=json may be omitted. JSON contains typed metadata and attributes but no readable content field; request Markdown when you need the extracted body.

Search

Use the dedicated GET endpoints when you need to discover webpages, current news, openly licensed images, public videos, places, stocks, or market movers 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/videos?q=Cloudflare+Workers+tutorial
GET /api/places?q=Brandenburg+Gate+Berlin
GET /api/places?q=coffee+Berlin&lat=52.52&lon=13.405

JavaScript

const endpoint = new URL(
  'https://webstractor.com/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.