Products

Website Content Extraction API: readable text from any page

Give it up to 20 URLs and get back the readable content of each page as Markdown or text, the title and language, and the contact points found on it. Built for feeding pages into a model, enriching a CRM, or checking what a site actually says.

POST/v1/websites/extract

200POST /v1/websites/extract
{
  "data": [
    {
      "url": "https://example.com/",
      "final_url": "https://example.com/",
      "status": "ok",
      "http_status": 200,
      "title": "Example Domain",
      "language": "en",
      "word_count": 28,
      "content": "# Example Domain\n\nThis domain is for use in illustrative examples…",
      "emails": [],
      "contact_form_url": null
    }
  ],
  "meta": {
    "credits_used": 1,
    "source": "websites"
  }
}

What you get

Every field in the response.

FieldMeaning
statusok, thin (client-rendered page), parked, http_error, not_html, unreachable, blocked, refused
content, title, language, word_countReadable content as Markdown or text (output parameter), capped by max_chars
emails[], socials{}, whatsapp, contact_form_urlContact points found on the page, with include_contacts
links[]Outgoing links when include_links is true
final_url, http_status, canonical_url, truncated, fetched_atWhat was actually fetched and when

How it works

What happens between your request and the response.

Validated before fetching

URLs must be http or https with a real host; private and internal addresses are refused and never charged.

Fetched from a datacenter address

No residential proxies for business websites. Redirects are followed by hand with every hop checked, and bodies are capped at 3 MB.

Boilerplate removed

Navigation, footers, scripts and cookie banners are stripped; headings, lists, tables and links are kept in Markdown.

Stops on a block

A 403 or a challenge page returns blocked. It is not retried through another address.

Pricing

One credit system for every endpoint.

One credit per page fetched, up to 20 per call. Refused URLs are free. Pages the crawler cannot read because they need JavaScript come back thin and cost one credit.

See all plans

Questions

Things people ask about the Website Content Extraction API.

Does it render JavaScript?

No. Server-rendered pages, which includes most business websites, WordPress, Shopify and documentation sites, extract fully. A single-page app that renders everything client-side returns status thin with whatever text the HTML carried.

Can I crawl a whole site?

The API takes a list of URLs you already have. For whole-site crawling with robots.txt and sitemap handling, use the Website Crawler actor on the Apify Store.

Is the content cached?

No. Every call fetches the page live, so what you get is what the site serves at that moment.