Website APIHTML, text and emails from one URL

Website scraping API for rendered HTML, clean text and published emails

Send a public URL and get back the page's final HTML, the text a visitor sees, or the email addresses the site publishes. JavaScript is rendered when the page needs it. Every response is JSON with a fixed credit price.

GET/v1/websites/text?url=https://example.com/contactGet API key

Read the docs100 free creditsNo credit card required

Endpoints

Three endpoints, one url parameter

Each endpoint takes the same url query parameter and returns the final URL it read. Pick the output you need: raw HTML, visible text, or email addresses.

Response

What each response contains

Every endpoint returns a { data, meta } object, and meta.creditCost tells you what the request cost. An email search also reports how many pages it read and why it stopped, so you can handle empty results in code instead of guessing.

url
The final URL the page was read from, after redirects.
title
The page title, or null when the page has none. Up to 4,096 characters.
html / text
The full page HTML, or its visible text. Up to 2 MB.
emails[]
Each address and the page it was published on, as email and sourceUrl.
pagesChecked
How many pages the search read, from 1 to 8.
truncated
True when the site published more than the 100 addresses returned.
stopReason
Why the search ended:foundexhaustedpage_limittime_limitpage_errors
meta.creditCost
Credits charged for this request.
GET/v1/websites/contentbash
curl -G "https://api.envoapi.com/v1/websites/content" \  -H "Authorization: Bearer $ENVO_API_KEY" \  --data-urlencode "url=https://example.com/contact"
Response2002 creditsjson
{  "data": {    "url": "https://example.com/contact",    "title": "Contact — Example",    "html": "<!doctype html><html lang=\"en\"><head><title>Contact — Example…"  },  "meta": { "creditCost": 2 }}

Example responses are shortened. A real html or text field holds the whole page, up to 2 MB.

HTML or text

Which output to pick

Both endpoints run the same fetch, cost the same 2 credits, and return the same url and title. The difference is what you do with the page next.

Use cases

What teams build with it

Built for production

What you can rely on

Which URLs are accepted

The same check runs before any request is charged. A URL that fails it returns 400 and costs nothing.

Accepted

  • HTTP or HTTPS, on the default port or an explicit 80 or 443
  • Up to 2,048 characters
  • Any public hostname with a dot in it, or a public IP address
  • Query strings. A fragment after # is ignored

Refused

  • A username or password in the URL
  • Any port other than 80 or 443
  • localhost, and hostnames ending in .local, .internal, .lan, .home, .test or .invalid
  • Private, loopback, link-local and other reserved IP ranges, including hosts that resolve to one

FAQ

Frequently asked questions

What does the Website Scraping API return?

Three endpoints share one url parameter. /v1/websites/content returns the final page HTML, /v1/websites/text returns the visible text, and both include the final URL and the page title. /v1/websites/emails returns the email addresses a site publishes, each with the page it was found on.

Is this a web scraping API or a crawler?

The HTML and text endpoints read one page per request. The email search reads up to 8 pages of one site and stops at the first page with addresses. There is no site-wide crawl, so you always know the most a request can do.

Does it render JavaScript?

When the page needs it. Static pages are read as served. Pages that build their content with JavaScript are rendered before the HTML or text is extracted, so you never choose a rendering mode yourself.

Which URLs can I send?

Public HTTP or HTTPS URLs on ports 80 and 443, up to 2,048 characters, without a username or password. Private, internal and localhost addresses are refused.

Can I fetch pages behind a login?

No. The API reads public pages only. URLs that carry a username or password are rejected, and no cookies or headers of yours are forwarded to the site.

Does it follow redirects?

Yes. The url field in every response is the final address the page was read from, so you can store it next to the address you sent.

How does the email search work?

It starts at the URL you send, reads up to 8 pages of the site, and stops at the first page that publishes email addresses. It returns up to 100 addresses with their source pages, how many pages it read, and a stopReason that says why it ended: found, exhausted, page_limit, time_limit or page_errors.

Are the emails verified?

No. The search reports addresses a site publishes. It does not check who owns them or whether they accept mail. Run an address through the Email Verification API before you send to it.

Which email should I use from the results?

Each address comes with a sourceUrl. Prefer addresses found on contact or about pages, then verify them before sending. If the site publishes nothing, the Email Finder API can look up a person's work email from their name and domain.

How large can a response be?

HTML and text are returned up to 2 MB. The title is up to 4,096 characters. An email search returns up to 100 addresses and sets truncated to true when the site had more.

What happens when the site is slow or down?

The request fails with a clear status instead of a partial page. You get 504 when the site times out, 502 when it returns an invalid response, and 503 with error.retryable when you should retry. Every response carries X-Request-Id for support and X-RateLimit-Remaining for pacing.

How many credits does a request cost?

HTML and text cost 2 credits each, and an email search costs 5. Email searches are charged whether they find addresses, find none, or stop early. New accounts start with 100 free credits, enough for 50 page fetches or 20 email searches.

Is the returned HTML safe to display?

Treat it as untrusted. The HTML and text come from a third-party site, so sanitize them before rendering them in a browser or passing them to a tool that executes content.

Try it on a page you already know

Sign up, copy your API key, and send your first URL. 100 free credits cover 50 page fetches or 20 email searches.