ZoomInfo Scraper: Public ZoomInfo Pages via API
No: a ZoomInfo scraper gets company data and the company's one public headquarters phone number from ZoomInfo's public pages, not individual email addresses, direct dials or mobile numbers. ZoomInfo keeps those in its paid database, behind a login, and a scraper should never sign in to reach them. ProxyField's Web Scraping API is priced at $0.50 per 1,000 successful results for public ZoomInfo pages, or $0.20 from 10,000 results in one purchase; it is in development, so contact sales for access, or run your own scraper today on ProxyField residential proxies with the Easy Trial: 1 GB for $2.95.
Through the sales team on our 24/7 live chat
| Fetch | Entry | Volume, from |
|---|---|---|
| HTTP | $0.50 | $0.20 |
| JS rendering | $2.00 | $1.00 |
Billed on successful results only.
Contact emails and phone numbers: what a scraper gets
ZoomInfo's own privacy policy draws the line. Its full Directory of company and person profiles "is then made available to the users of the Site, our customers, and our partners", while only "certain limited Business Information" goes into the Public Directory, the pages anyone can open (ZoomInfo Privacy Policy, PDF version, "Updated: June 9, 2025"; the HTML version is updated October 13, 2025).
| Field (as the policy lists it) | In a Professional Profile (ZoomInfo customers, behind the login) | May appear in the Public Directory (what a scraper can read) |
|---|---|---|
| Name, company, job title | Yes | Yes: "past or current name, company", "job title" |
| Telephone | "general or direct business numbers, faxes, and/or mobile numbers" | Only the "company headquarter's telephone number" |
| Email address | "business and/or other email addresses, such as 'freemails' like Gmail, Yahoo, Hotmail" | Not listed |
| Address | Company and business postal address | "office address" |
| Career | Employment history, education, affiliations | "previous professional experience, professional memberships and affiliations, education information" |
| Links | Social media profiles, articles | "web links to articles recently written by or about the featured individual" |
So the answer to "can a ZoomInfo scraper get contact emails and phone numbers?" is: the headquarters line, yes; personal emails, direct dials and mobile numbers, no. They come only through ZoomInfo's own API or a logged-in account under a ZoomInfo contract, and a scraper must not use either: ProxyField's acceptable use policy forbids accessing data behind logins you are not entitled to.
What ZoomInfo shows on public pages
ZoomInfo is a paid B2B database that publishes a public profile for many companies and some people so that search engines can index them. A logged-out visitor sees company facts and job titles; email addresses and direct phone numbers stay masked.
| Page type | Example URL | What a logged-out visitor usually sees |
|---|---|---|
| Company profile | zoominfo.com/c/<company>/<id> | Name, description, headquarters address, main phone line, website link, industry, employee count, stock symbol where the company is listed; revenue where the page shows it |
| Employees on a company profile | the same page | Some employees' names and job titles, with email and phone masked |
| Person profile | zoominfo.com/p/<name>/<id> | Name, job title, employer and location; email and phone masked |
| Similar companies | linked from a company profile | Competitors and peers, each with a link to its own profile |
What ZoomInfo shows logged out changes from time to time, so test a sample of your page types before you plan a volume. The Web Scraping API is designed to return the page itself as HTML, Markdown or plain text, or as a JSON envelope with the status code, the final URL, the headers, the cookies and the content; it has no parsed ZoomInfo fields, so your parser reads them.
How the Web Scraping API is designed to fetch a ZoomInfo page
You send the URL of a public ZoomInfo company or person page and choose plain HTTP or JS rendering; the API returns the page. In its design, the API takes a POST to https://api.proxyfield.io/v1/scrape with your API key in an Authorization: Bearer <api_key> header and a JSON body: url, render (false for plain HTTP, true for JS rendering), country and output (html, markdown, text or json). It allows 20 concurrent requests per account and batches of up to 1,000 URLs. The API is in development; the parameter reference is in the API documentation.
# The request as the Web Scraping API is designed (in development; access through Contact sales)
curl https://api.proxyfield.io/v1/scrape \
-H "Authorization: Bearer <api_key>" \
-H "Content-Type: application/json" \
-d '{"url": "https://www.zoominfo.com/c/example-inc/123456789", "render": false, "country": "us", "output": "json"}'Example response in the API's design (shortened; content is the page's HTML):
{
"metadata": {"id": "req_0247cefb1c0f45b4", "api": "web_scrape", "status": "success", "billed": true},
"status_code": 200,
"final_url": "https://www.zoominfo.com/c/example-inc/123456789",
"content_type": "text/html; charset=utf-8",
"content": "<!DOCTYPE html><html lang=\"en\">…</html>"
}| Choice | Price per 1,000 successful results | Use it for |
|---|---|---|
| Plain HTTP | $0.50, or $0.20 from 10,000 results in one purchase | Company and person profiles whose facts are in the HTML |
| JS rendering | $2.00, or $1.00 from 10,000 results in one purchase | Sections that load only in a browser |
Start with plain HTTP on a sample of profiles; switch to JS rendering only for the parts that come back empty.
Pricing: $0.50 per 1,000 ZoomInfo pages, from $0.20
ZoomInfo pages cost the Web Scraping API's price: $0.50 per 1,000 successful results over plain HTTP and $2.00 with JS rendering; from 10,000 successful results in one purchase, $0.20 and $1.00. You pay only for successful results.
- Billed: a page the site returned, including a target's 404 or 410 and a sign-in page the site serves with a 200 status.
- Not billed: error responses, blocked and timed-out requests, and our internal retries.
- In the API's design, every response says whether it was billed.
Payment: the same crypto balance as proxies (USDT, BTC, ETH and 10 other coins), which never expires; there is no subscription, plan or monthly fee. All prices: pricing. Contact sales through the sales team on our 24/7 live chat.
Through the sales team on our 24/7 live chat
| Workload (30-day month) | Results | Plain HTTP at $0.50 | JS rendering at $2.00 |
|---|---|---|---|
| 500 target accounts, refreshed weekly (4 runs) | 2,000 | $1 | $4 |
| 5,000 company profiles, once | 5,000 | $2.50 | $10 |
| 50,000 companies for a market map, once | 50,000 | $25 ($10 at $0.20) | $100 ($50 at $1.00) |
ZoomInfo's own API or a scraper?
ZoomInfo gives API access to its paying customers under their contract, with the full database behind it: verified emails, direct dials and the company records a subscription covers. A scraper reads only what ZoomInfo shows the public, which is less, but it needs no ZoomInfo contract.
| Item | ZoomInfo API | Web Scraping API |
|---|---|---|
| Who can use it | ZoomInfo customers, per contract | ProxyField customers (in development; Contact sales) |
| Data | The records your plan covers, including contacts | Public company and person profiles, contacts masked |
| Approval | A ZoomInfo subscription | None from ZoomInfo |
| Cost | Set by ZoomInfo | $0.50 per 1,000 successful results, from $0.20 |
If you need verified contact details at scale, that is what ZoomInfo's subscription sells; a scraper does not replace it.
Why ZoomInfo is hard to scrape: what we saw on 2026-10-28
ZoomInfo sits behind Cloudflare. On 2026-10-28 we sent one plain request (a browser User-Agent, no proxy) from a cloud server in Helsinki to a public company profile, https://www.zoominfo.com/c/tesla-inc/104333869. The answer was not the profile:
HTTP/2 403
server: cloudflare
<title>Just a moment...</title> (5,783 bytes; the challenge script loads from challenges.cloudflare.com)That is Cloudflare's challenge page, served to a client it does not trust: here a datacenter IP with no browser behind it. What follows from it:
- Check every response for the challenge, not only the status. A 403 with "Just a moment..." in the title means you were challenged, not that the profile is gone; slow down and change the IP or the client. More in Cloudflare 403 Forbidden.
- Datacenter IPs and fast clients are the first to be challenged. With your own scraper, use rotating residential IPs, keep several seconds between requests per IP and send normal browser headers.
- ZoomInfo's robots.txt leaves
/c/company and/p/person pages open to general crawlers, closes paths such as/api,/people_directory,/search/companyand the account pages, and closes the whole site to a list of named bots (Bytespider, CCBot and Diffbot among them). robots.txt is not permission: follow the site's terms as well. - Finding URLs is the second limit. Each profile carries an id, so you reach it from ZoomInfo's similar-company links or from search results. The Google SERP API is priced at $1.20 per 1,000 successful results, from $0.80, and returns the Google results page as JSON, which is one way to find the profile URL for a company name.
What teams use public ZoomInfo data for
- Account research size, industry and headquarters of a target company before a sales call.
- Market maps companies by industry, size and region, as the base for a total addressable market estimate.
- CRM enrichment industry and employee counts added to company records you already hold.
- Competitor lists the peers ZoomInfo links from each company profile.
Not allowed on ProxyField: spam, fraud including fake accounts or engagement, and accessing data behind logins you are not entitled to. Lead lists built from company websites and directories have their own page: lead scraper API.
Scrape ZoomInfo with Python and ProxyField proxies
For a few hundred company profiles, Python through residential IPs works: fetch the page, read the title, the description tag and the headline, and save the HTML of any page that does not parse. Keep to 1 request every few seconds per IP and rotate the IP on every request.
Read moreShow less
import json
import requests
from bs4 import BeautifulSoup
proxy = "http://<login>-country-us-city-new_york:<password>@gate.proxyfield.io:7000"
url = "https://www.zoominfo.com/c/example-inc/123456789" # a public company profile
resp = requests.get(url, proxies={"http": proxy, "https": proxy},
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 "
"(KHTML, like Gecko) Chrome/130.0 Safari/537.36",
"Accept-Language": "en-US,en;q=0.9"},
timeout=30)
soup = BeautifulSoup(resp.text, "html.parser")
title = soup.title.get_text(strip=True) if soup.title else ""
if resp.status_code == 403 and "Just a moment" in title:
print("Cloudflare challenge: slow down, rotate the IP, or fetch this URL with JS rendering")
elif resp.status_code != 200:
print("No profile:", resp.status_code, "- check the URL and the id")
else:
desc = soup.find("meta", attrs={"name": "description"})
print(title)
print(desc["content"] if desc else "")
print(soup.h1.get_text(strip=True) if soup.h1 else "")
for block in soup.find_all("script", type="application/ld+json"): # structured data, if the page has it
try:
print(json.dumps(json.loads(block.string), indent=1)[:500])
except (TypeError, ValueError):
pass
open("profile.html", "w").write(resp.text) # inspect, then pick the fieldsThe script prints the page title, the description tag, the headline and any JSON-LD block the profile carries, and saves the HTML so you can choose the fields; a challenged request prints the challenge line instead of failing silently.
ProxyField residential proxies cost $2.95/GB for 1 GB and from $1.95/GB at volume, with no subscription; the traffic never expires, and all purchases are final. You get 412M+ residential IPs in 195+ countries, targeting by country, region (state) and city, and a new IP on every request or a sticky session from 30 s to 36 h, over HTTP, HTTPS or SOCKS5 on gate.proxyfield.io:7000.
Is it legal to scrape ZoomInfo?
Read ZoomInfo's terms of use before you start: if they forbid automated access, as data platforms' terms commonly do, collecting even its public pages breaches them, separate from whether it breaks a law. In the US, the Computer Fraud and Abuse Act (CFAA) is about access: in hiQ Labs v. LinkedIn (9th Cir. 2022) the court found serious questions as to whether it reaches pages open to the general public at all, but hiQ later lost on contract, and anything behind ZoomInfo's login is the clear risk. Names and job titles on person pages are personal data: in the EU and UK, GDPR needs a lawful basis, data minimisation and, in most cases, a notice to the people you collect; in California the CCPA may give them rights over that data. Company facts such as industry and size carry far less risk than people's details, so collect company fields first and people's details only if your purpose needs them. The wider answer is in Is Web Scraping Legal? US, EU and UK Rules (2026) and Web Scraping Law in the UK and EU.
ProxyField's rule for every site: public pages only, and follow the site's terms. This is not legal advice.
More scraper APIs
- Lead scraper API public B2B company pages from directories and company websites.
- LinkedIn scraper public LinkedIn company and profile pages.
- Google Maps scraper Google Maps search results, $1.50 per 1,000 successful results, from $1.00.
- Web Scraping API any URL, plain HTTP or with JS rendering, from $0.20 per 1,000 successful results.
- All scraper APIs
ZoomInfo Scraper FAQ
24/7 support by live chat, including help with setup and integration.
What is a ZoomInfo scraper API?
ProxyField has no separate ZoomInfo API; its Web Scraping API, in development, is priced at $0.50 per 1,000 successful results over plain HTTP, from $0.20 from 10,000 results, for public ZoomInfo company and person pages. You send the profile URL, get the page back and parse the fields you need; you pay only for successful results.
Can a ZoomInfo scraper get contact emails and phone numbers?
Only the company's headquarters phone number: ProxyField's Web Scraping API ($0.50 per 1,000 successful results, in development) and any other scraper of ZoomInfo's public pages get company facts, that one number and some names and job titles, not individual emails, direct dials or mobile numbers. ZoomInfo's privacy policy lists emails and direct and mobile numbers in its customer profiles but only the "company headquarter's telephone number" for its Public Directory. Contacts come only through ZoomInfo's API or a logged-in account under a ZoomInfo contract, which ProxyField's acceptable use policy does not let a scraper use.
How do I scrape ZoomInfo?
Collect the URLs of the public company profiles you need, fetch each page through rotating residential IPs or a scraping API, and read the company facts from the HTML. Keep the rate low, save pages that do not parse, and leave anything behind ZoomInfo's login alone.
What data can a ZoomInfo data scraper collect?
From public pages: company name, description, headquarters address, main phone line, website, industry, employee count, similar companies, and some employees' names and job titles; ZoomInfo's privacy policy also lists past experience, education, affiliations and article links for people in its Public Directory. Email addresses and direct phone numbers are masked for logged-out visitors, so a scraper does not see them.
Do I need a ZoomInfo account or API key to scrape it?
No: the public company and person profiles open without an account, and a scraper should never sign in. A ZoomInfo API key comes only with a ZoomInfo subscription and gives access to its own API, not to the public pages.
Is scraping ZoomInfo legal?
It depends on ZoomInfo's terms and on what you collect and where: a breach of a site's terms is separate from a breach of the law. Names and job titles are personal data under GDPR in the EU and UK, while company facts carry far less risk. This is not legal advice.
How much does it cost to scrape ZoomInfo?
On ProxyField's Web Scraping API, 5,000 ZoomInfo company profiles cost $2.50 over plain HTTP and 50,000 cost $25, or $10 at the $0.20 price from 10,000 results. With your own scraper you pay for traffic instead, from $1.95/GB for residential proxies, or $2.95 for the 1 GB Easy Trial.
What's the rate limit for scraping ZoomInfo?
ZoomInfo publishes no rate limit for its public pages; it blocks or challenges clients that request too fast from one IP. Keep several seconds between requests per IP and spread a large job over rotating residential IPs.
How do I handle JavaScript when scraping ZoomInfo?
Try plain HTTP first, because company facts on public profiles are usually in the HTML. If a section comes back empty, fetch that page with JS rendering, priced at $2.00 per 1,000 successful results on ProxyField's Web Scraping API, from $1.00.
Can I scrape ZoomInfo from a specific country?
Yes, with your own scraper: ProxyField residential proxies offer targeting by country, region (state) and city, with 412M+ residential IPs in 195+ countries. Check on a sample whether the profiles you need look different from another country before you spread a job over several.
Show 9 more questionsShow fewer questions
Which programming languages can I use to scrape ZoomInfo?
Any language that can send HTTP requests through a proxy: Python with requests and Beautiful Soup is the most common, and Node.js, Go or Java work the same way. For pages that need a browser, use Playwright, Puppeteer or Selenium.
How do I get structured JSON from ZoomInfo?
Fetch the public profile and turn the fields you need into JSON in your own parser: company name, industry, size range and address. Check the parser on a sample every week, because ZoomInfo changes its page layout from time to time.
Can I scrape ZoomInfo without writing code?
For a handful of profiles, copy the facts by hand or use a browser extension that exports a page to CSV. For hundreds of companies, an automation tool with an HTTP step can call a scraping API and write the pages' facts to a spreadsheet.
Can I schedule ZoomInfo scraping for recurring updates?
Yes: run your script or API calls on a schedule, for example weekly for target accounts, and store each result with the date of the check. A weekly refresh of 500 profiles is 2,000 pages a month, $1 over plain HTTP.
How do I add scraped ZoomInfo data to my CRM or other tools?
Match each profile to a company record by domain or name, then write the fields into your CRM through its import or API. Keep the date and source URL with every record, so you can refresh or delete it later.
What is scraped ZoomInfo data used for?
Account research before sales calls, market maps by industry and size, enrichment of company records with industry and employee counts, and lists of competitors. Most of these uses need company facts rather than people's details.
Why does ZoomInfo return 403 "Just a moment..." to my scraper?
That is a Cloudflare challenge page, not a missing profile: in our test on 2026-10-28, a plain request from a cloud server got HTTP 403 and a page titled "Just a moment...". Slow down, use rotating residential IPs with normal browser headers, or fetch the page with JS rendering, $2.00 per 1,000 successful results on ProxyField's Web Scraping API (in development).
What is ZoomInfo?
ZoomInfo is a paid B2B data platform that sells company and contact data to sales and marketing teams. It also publishes public directory pages for many companies and people, which is what a scraper can read.
Is a "Zoom Info scraper" the same as a ZoomInfo scraper?
Yes: "Zoom Info" is a common spelling of the brand ZoomInfo, and both searches look for a tool that collects data from its public pages. It has nothing to do with the Zoom video app.
Related pages
Collect ZoomInfo pages with the Web Scraping API
Billed on successful results only. Contact sales for the Web Scraping API and the volume you need, or run your own scraper on residential proxies. 24/7 live chat helps with setup and integration.