Yellow Pages Scraper | US Business Phones, Websites & Hours avatar

Yellow Pages Scraper | US Business Phones, Websites & Hours

Pricing

from $1.00 / 1,000 businesses

Go to Apify Store
Yellow Pages Scraper | US Business Phones, Websites & Hours

Yellow Pages Scraper | US Business Phones, Websites & Hours

Scrape YellowPages.com category pages by trade and US city: business name, phone, address, categories, website, rating, opening hours and years in business. No login. Pay per business. Emails from each business's own website from 14 Oct 2026. Works in Claude, ChatGPT and any MCP agent.

Pricing

from $1.00 / 1,000 businesses

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

a day ago

Last modified

Share

15 Austin plumbers from Yellow Pages in 24 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.

Give it a business type and a US city, for example plumbers in Austin, TX, and get one row per business from YellowPages.com: name, phone numbers in international format, full address split into parts, website, categories, opening hours, rating, years in business and the short description the directory shows. No Yellow Pages account, no cookies and no proxy to set up. From 14 October 2026 it can also look up each business's email on its own website (see Pricing).

Why choose this actor?

  • A phone number on every business. On 29 September a search for plumbers in Austin returned 15 businesses in 24 seconds, all 15 with a phone number in +1 512 ... format and 13 with a full street address; Yellow Pages listed 491 plumbers for that search. A 5 business run on the current build took 6 seconds.
  • Gets through Yellow Pages' Cloudflare wall, at no extra cost. Every Apify datacenter connection we tried was refused, so the actor reads pages through Apify's unblocking proxy and retries a refused page up to 3 times. That proxy is included in the per business price.
  • Pay only for businesses delivered, once each. From $1.00 per 1,000 businesses on Gold. A business found by two of your searches, pages Yellow Pages refused, searches with no results and the run's report row are never charged. Emails, when you switch them on, are charged only when one is found.

Run it on Apify

Part of The Mine Works Leads and business directories family: B2B Leads Finder, Skip Trace Lookup, Google Maps Email Scraper, JustDial Scraper, 2GIS Places Scraper, IndiaMART Scraper.

Try it in one minute

Paste this into the JSON tab of the input page and press Start:

{
"queries": ["plumbers"],
"locations": ["Austin, TX"],
"maxResultsPerSearch": 10
}

You get 10 Austin plumbers with phones, addresses and websites in well under a minute.

Give the search in either of two ways: business types in queries (Yellow Pages category names such as plumbers, dentists or roofing contractors) together with US towns in locations written as City, ST (Austin, TX, Columbus, Ohio), where every query is searched in every location; or Yellow Pages category pages pasted into startUrls. maxResultsPerSearch caps each query and location pair. ZIP codes and towns without a state are not accepted.

Apify's free plan includes $5 of credit every month, which covers about 2,400 businesses at this actor's Free plan price ($0.002 a business plus the $0.005 start fee, in runs of 100 or more), before any email charges.

Copy to your AI assistant

themineworks/yellowpages-us on Apify. Reads YellowPages.com category pages for a business type in a US city and returns one row per business with name, categories, phone numbers (+1 format), address split into street, city, region and postal code, website, opening hours, rating, review count, years in business and description. Call ApifyClient("TOKEN").actor("themineworks/yellowpages-us").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: queries (string[], Yellow Pages category names, up to 50) with locations (string[], "City, ST", up to 50), or startUrls (Yellow Pages category page URLs). Optional: maxResultsPerSearch (1 to 1000, default 30; 30 per page), includeEmails (default false; works from 14 Oct 2026, each email found then costs $0.015 to $0.03 by plan), verifyEmailDomain (default true). Every query runs in every location; a business found twice is returned once. Per search status is in the run's OUTPUT key-value record; the dataset's last row has _type "info" and is never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~yellowpages-us/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations

Key features

  • Up to 23 fields per business today: listing_id, listing_url, name, categories, phone, phones, address, street, postal_code, city, region, country, website, rating, review_count, opening_hours, description, years_in_business, service_area, plus search_query, search_location, source_site and scraped_at.
  • Many trades in many towns in one run. Up to 50 queries and 50 locations, at most 300 searches per run and 1,000 businesses per search. Two searches run at once, 30 businesses per page.
  • Phones ready to dial. Every phone is converted to international format (+1 512 766 0970) when it parses as a valid US number, and phones keeps every number the listing shows.
  • Only the real list. The paid ads Yellow Pages shows above a category, mostly businesses from other towns and national lead sellers, are left out. Each business is delivered once per run even when several searches find it.
  • Respects the site's rules. The actor reads yellowpages.com's robots.txt at the start of every run and opens only pages it allows: category pages, never the site's own search results, which robots.txt disallows. A pasted search link is turned into the matching category page.
  • Email finder, from 14 October 2026. With includeEmails on, the actor reads each business's own website (home page, then contact and about pages, at most 5 pages and 20 seconds a site), keeps only addresses on the business's own domain or a normal mail provider, drops the web agency's and placeholder addresses, and with verifyEmailDomain keeps only domains that can receive mail. Until that date the switch is ignored and no email is charged.

How to use it

Basic: one trade in one city

{
"queries": ["dentists"],
"locations": ["Columbus, OH"],
"maxResultsPerSearch": 100
}

About 4 pages of 30. The OUTPUT record tells you how many dentists Yellow Pages lists in total for the search.

Several trades across several cities

{
"queries": ["plumbers", "electricians", "hvac contractors"],
"locations": ["Austin, TX", "Dallas, TX", "Houston, TX"],
"maxResultsPerSearch": 200
}

Nine searches in one run. A business listed under two of the trades is delivered and charged once.

Call list for a sales team

{
"queries": ["roofing contractors"],
"locations": ["Denver, CO", "Aurora, CO"],
"maxResultsPerSearch": 300
}

Every row has phone. Sort by years_in_business to call established firms first, and keep website for research before the call. Check your local do not call and telemarketing rules before dialling.

Monthly refresh of a local market map

{
"queries": ["coffee shops"],
"locations": ["Portland, OR"],
"maxResultsPerSearch": 1000
}

Save it as a task and schedule it monthly (for example 0 6 1 * *). Compare listing_id lists between months to see which businesses appeared or dropped off. Each run returns and charges every business it finds; the actor keeps no memory between runs.

Leads with emails (from 14 October 2026)

{
"queries": ["landscaping"],
"locations": ["Charlotte, NC"],
"maxResultsPerSearch": 100,
"includeEmails": true,
"verifyEmailDomain": true
}

From 14 October, each business whose own website publishes an email comes back with it, and only those businesses add the email charge. Businesses with no website, or with only a contact form, are still delivered, without an email and without the email charge. Before 14 October this input runs as if includeEmails were off.

Paste a category page you found on Yellow Pages

{
"startUrls": [{ "url": "https://www.yellowpages.com/austin-tx/plumbers" }],
"maxResultsPerSearch": 60
}

Useful for towns whose page name is unusual. The page is read from its first page on, with the same limits and charges as a typed query.

Input parameters

ParameterTypeDefaultWhat it does
queriesarray of stringsnone (form prefill: plumbers)Business types as Yellow Pages category names, one search each, up to 50. Several words become one category page (roofing contractors is /roofing-contractors).
locationsarray of stringsnone (form prefill: Austin, TX)US city and state: Austin, TX, Columbus OH, Columbus, Ohio. Required with queries. Up to 50. Every query is searched in every location.
startUrlsarray of URLsnoneYellow Pages category pages to read instead of, or as well as, queries and locations.
maxResultsPerSearchinteger (1 to 1,000)30 (form prefill: 30)Most businesses per query and location pair. The site shows 30 per page.
includeEmailsbooleanfalseLook up each business's email on its own website. Takes effect on 14 October 2026, when its price starts; until then it is ignored and no email is charged.
verifyEmailDomainbooleantrueWith emails on, keep an address only when its domain can receive mail (it has a mail server).

"Form prefill" values fill the Console form for you but are not defaults. Inputs saved for the earlier version of this actor (one search term, one location and a result count) still work and are read as queries, locations and maxResultsPerSearch.

Run options. The default memory is 512 MB and the default timeout is 3,600 seconds. A page of 30 takes about 5 to 15 seconds through the unblocking proxy, and two searches run at once. A run that reaches its timeout stops cleanly and keeps everything delivered; raise the timeout for very large runs, and allow extra time when emails are on.

What data do you get?

One row per business. Fields the directory does not publish for a business are left out of that row rather than sent as null.

The business: listing_id, listing_url (its Yellow Pages page), name, categories (every trade it is listed under), description (the short "From Business" text), years_in_business (from the Yellow Pages badge).

Contact: phone (the main number, +1 format when valid) and phones (every number listed), website (the business's own site, tracking parameters removed).

Location: address (one line), street, city, region (the two letter state), postal_code, country (US), and service_area for a business with no street address that serves an area, such as Austin. Coordinates are only included when the directory gives them, which none of our sampled rows had.

Reputation and hours: rating, review_count, opening_hours (such as Mo-Fr 09:00-17:00).

Run context: search_query, search_location, source_site (yellowpages.com), scraped_at.

Emails, from 14 October 2026. With includeEmails on, a business whose email is found also gets the best address, up to five addresses in total (best first), where the email came from (the directory or the business's website) and the page it was read on. These fields appear only in rows that have an email.

In our 20 sampled rows from 29 and 30 September, every business had a phone, 18 had an address, 17 had opening hours, 13 had a website, 13 had a description, 11 had a years in business badge and 6 had a rating.

The dataset ends with one _type: "info" row, a short message that is never billed. The full run report is the OUTPUT record in the run's key-value store: delivered, emails_delivered, searches_by_status, and for each search its status (ok, no_results or blocked), site_total_results (how many businesses Yellow Pages lists), pages_fetched, pages_failed and stop_reason, plus a billing block with what was charged.

Stable fields for automations

These 11 fields were present in every business row we sampled (20 rows from two runs on 29 and 30 September 2026):

FieldWhat it holds
listing_idYellow Pages' business ID; the deduplication key
listing_urlThe business's page on yellowpages.com
nameBusiness name
categoriesList of the categories it is listed under
phoneMain phone, +1 format when valid
phonesEvery phone number listed
countryAlways US
source_siteAlways yellowpages.com
search_queryThe query that found it
search_locationThe location that found it
scraped_atISO timestamp when the row was captured

address, city, region and postal_code were in 18 of the 20 rows; one of the other two listed a service_area instead. We will not rename these fields. New fields may be added over time; existing ones keep their names.

Output examples

Real rows from our runs on 29 and 30 September 2026 (plumbers in Austin, TX).

A local business with a full address, website, hours and rating:

{
"listing_id": "10674347",
"listing_url": "https://www.yellowpages.com/austin-tx/mip/clarke-kent-plumbing-10674347",
"name": "Clarke Kent Plumbing",
"categories": ["Plumbers", "Plumbing-Drain & Sewer Cleaning"],
"phone": "+1 512 766 0970",
"phones": ["+1 512 766 0970"],
"address": "1408 W Ben White Blvd, Austin, TX 78704",
"street": "1408 W Ben White Blvd",
"postal_code": "78704",
"city": "Austin",
"region": "TX",
"country": "US",
"website": "http://www.clarkekentplumbing.com",
"rating": 2.87,
"review_count": 15,
"opening_hours": ["Mo-Fr 09:00-17:00"],
"years_in_business": 40,
"source_site": "yellowpages.com",
"search_query": "plumbers",
"search_location": "Austin, TX",
"scraped_at": "2026-09-30T10:53:29.470Z"
}

A business that serves the area but lists no street address, so it has service_area instead:

{
"listing_id": "580143680",
"listing_url": "https://www.yellowpages.com/nationwide/mip/best-home-savings-580143680",
"name": "Best Home Savings",
"categories": ["Plumbers", "Plumbing Contractors-Commercial & Industrial", "Water Heaters"],
"phone": "+1 855 566 6978",
"phones": ["+1 855 566 6978"],
"country": "US",
"opening_hours": ["Mo-Su"],
"description": "Compare offers from Local Contractors in your Neighborhood. Call Now...No one can avoid the probability of plumbing issues like leaking faucets, drainage…",
"service_area": "Austin",
"source_site": "yellowpages.com",
"search_query": "plumbers",
"search_location": "Austin, TX",
"scraped_at": "2026-09-29T09:14:08.598Z"
}

Pricing

Pay per event: you pay for each business delivered to your dataset, plus a small start fee per run. From 14 October 2026 you can also pay for emails, only when one is found.

Today:

EventFreeBronzeSilverGold and above
business-scraped, per business$0.002$0.0016$0.00125$0.001
business-scraped, per 1,000 businesses$2.00$1.60$1.25$1.00
apify-actor-start, per run$0.005 per GB of run memory, minimum one eventsamesamesame

From 14 October 2026 (11:12 UTC): the prices above stay the same, and a new email event is added:

EventFreeBronzeSilverGold and above
email-found, per business delivered with an email$0.03$0.025$0.02$0.015

The email event is charged only when includeEmails is on and the row carries an email. A business with no email found costs the business price only. The same email address is charged once per run, even if two businesses share it.

The start fee, exactly. Apify's apify-actor-start event is charged once when a run starts, at $0.005 for each GB of memory the run uses, with a minimum of one event. This actor runs on 512 MB by default, so a default run pays one event: $0.005. Our 30 September run shows apify-actor-start: 1 and business-scraped: 5.

Worked examples. 100 plumbers in one city on the Free plan: $0.20 plus $0.005. 1,000 businesses on Gold: $1.00 plus $0.005. After 14 October on Gold, 1,000 businesses with emails found for 250 of them: $1.00 plus 250 x $0.015 = $3.75, plus $0.005. The unblocking proxy is included in every price.

Never charged: pages Yellow Pages refused and their retries, a business found again by a second search, searches with no results, towns Yellow Pages does not know, website lookups that found no email, and the info row. A run that delivers nothing pays only the start fee.

The Pricing tab on this page always shows the rate for your plan; if it and these tables ever differ, the Pricing tab is right.

FAQ

What is Yellow Pages? YellowPages.com is a long running US business directory with listings for local businesses by trade and town: phone numbers, addresses, websites, hours and ratings. This actor reads its public category pages, the same ones any visitor sees without signing in.

How many businesses can I get? Up to 1,000 per query and location pair, and up to 300 such searches per run (50 queries and 50 locations). The OUTPUT record shows how many Yellow Pages lists for each search (491 plumbers in Austin on 29 September) next to how many were read.

What do I type into queries and locations? Queries are Yellow Pages category names: plumbers, dentists, electricians, restaurants, roofing contractors. A word that is not a category returns no results rather than a loose keyword match, because the site's free text search is closed to crawlers by its robots.txt. Locations are a US city and state (Austin, TX, Columbus Ohio); St. is read as Saint (St. Louis, MO). If a town gives no results, open its category page on yellowpages.com and paste the link into startUrls.

Does it return emails? From 14 October 2026, when the email price starts, yes: switch on includeEmails. Yellow Pages does not show emails on its category pages, so the actor reads each business's own website. Businesses with no website, only a social media page, or only a contact form cannot give an email this way. Before 14 October the switch is ignored and nothing is charged for emails.

Do I need a Yellow Pages account, cookies or a proxy? No. You need only an Apify account. The actor picks its own connection, Apify's unblocking proxy, and its cost is included in the price.

How fresh is the data? Every run reads Yellow Pages live; nothing is cached between runs. The listings are as current as Yellow Pages keeps them, which for some small businesses can lag behind reality; check website and phone before relying on an old listing.

Can I run it on a schedule? Yes. Save your input as a task, then in Apify Console go to Schedules, Create new, and pick a time or a cron expression such as 0 6 1 * * for the first of each month. Each scheduled run is billed like a manual one; the schedule itself costs nothing.

How do I export the data? From the run's Storage tab as JSON, CSV, Excel, XML or HTML, or through the Apify API. Drop the row that has a _type field if you want businesses only.

Why are paid ads missing? Yellow Pages shows a block of paid ads above each category list, mostly businesses from other towns and national lead sellers. They are not part of the category, so they are left out. Businesses inside the list itself are all delivered, including the few nearby town businesses Yellow Pages places there.

Can I use it from Claude, ChatGPT or another AI assistant?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/yellowpages-us.
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http yellowpages-us "https://mcp.apify.com/?tools=themineworks/yellowpages-us".

Is it legal to scrape Yellow Pages? The actor collects only publicly visible business listings, never logs in and follows the site's robots.txt. Business contact details can still be personal data when they identify a person, such as a sole trader's name and mobile number, so how you store and use them is your responsibility: follow CCPA and GDPR where they apply, CAN-SPAM for email and the TCPA and do not call rules for phone outreach in the US. This is general information, not legal advice. This actor is independent and not affiliated with Yellow Pages.

Integrations

  • Google Sheets: export a run to a sheet, or use Apify's Google Sheets integration to add each scheduled run's businesses.
  • Make, Zapier and n8n: use the Apify app or node to start a run and push businesses into a CRM, a dialer or an outreach tool.
  • Webhooks: have Apify call your URL when a run succeeds, then read the dataset.
  • API and client libraries: start runs and read datasets from Python, JavaScript or any HTTP client. The "Copy to your AI assistant" block above has the exact call.
  • MCP clients: Claude, ChatGPT, Cursor, VS Code and Claude Code can call the actor as a tool through https://mcp.apify.com.

Need emails for websites you already have? Website Contact Finder reads them from any list of sites. For Canada and the UK, see Yellow Pages Canada and Yell.

More from The Mine Works

Leads and business directories

Social media and video

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

Jobs and hiring

Company and business data

E-commerce and marketplaces

Food and local services

Developer and AI tools

More tools

Support

Found a town or category that returns nothing, or need a field we do not return yet? Open an issue on the Issues tab of this page with your input and the run ID, and we will reply there. To ask for a new directory, email dmineworks@gmail.com. A guide for this actor also lives at themineworks.com.

Yellow Pages Scraper turns a trade and a US city into business rows with phones, addresses, websites and hours, with emails from 14 October 2026, charged once per business.