Site scraper

ZoomInfo Scraper: Public ZoomInfo Pages via API

HTTP $0.50JS rendering $2.00 per 1,000 results or your own scraper from $1.95/GB

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.

Web Scraping API per 1,000 successful results
Web Scraping API prices per 1,000 successful results
FetchEntryVolume, from
HTTP$0.50$0.20
JS rendering$2.00$1.00

Billed on successful results only.

Your own scraper on residential proxies
from $1.95/GB Easy Trial: 1 GB for $2.95
gate.proxyfield.io:7000
Data

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 titleYesYes: "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
AddressCompany and business postal address"office address"
CareerEmployment history, education, affiliations"previous professional experience, professional memberships and affiliations, education information"
LinksSocial 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 typeExample URLWhat a logged-out visitor usually sees
Company profilezoominfo.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 profilethe same pageSome employees' names and job titles, with email and phone masked
Person profilezoominfo.com/p/<name>/<id>Name, job title, employer and location; email and phone masked
Similar companieslinked from a company profileCompetitors 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 it works

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.

Shell
# 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):

JSON
{
  "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>"
}
ChoicePrice per 1,000 successful resultsUse it for
Plain HTTP$0.50, or $0.20 from 10,000 results in one purchaseCompany and person profiles whose facts are in the HTML
JS rendering$2.00, or $1.00 from 10,000 results in one purchaseSections 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

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)
Workload (30-day month), Results, Plain HTTP at $0.50, JS rendering at $2.00
Workload (30-day month)ResultsPlain HTTP at $0.50JS rendering at $2.00
500 target accounts, refreshed weekly (4 runs)2,000$1$4
5,000 company profiles, once5,000$2.50$10
50,000 companies for a market map, once50,000$25 ($10 at $0.20)$100 ($50 at $1.00)
Compare

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.

ItemZoomInfo APIWeb Scraping API
Who can use itZoomInfo customers, per contractProxyField customers (in development; Contact sales)
DataThe records your plan covers, including contactsPublic company and person profiles, contacts masked
ApprovalA ZoomInfo subscriptionNone from ZoomInfo
CostSet 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.

Good to know

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/company and 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.
Use cases

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.

Do it yourself

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
Python
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 fields

The 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.

FAQ

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.

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.

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.