Yelp Business Scraper | Phones & Address avatar

Yelp Business Scraper | Phones & Address

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Yelp Business Scraper | Phones & Address

Yelp Business Scraper | Phones & Address

Scrape Yelp listings without the official Yelp API. Search by keyword, category, or URL and extract names, ratings, phones, street addresses, websites, hours, and guest review snippets from /biz pages. Export restaurant, dentist, hotel, and local-lead lists as CSV, Excel, or JSON. No login.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

1

Total users

0

Monthly active users

6 hours ago

Last modified

Categories

Share

Yelp Scraper | Business Phones & Address

Yelp Scraper

Scrape Yelp business listings without the official Yelp API. Search by keyword, category (cflt), or a live /search / /biz URL. Export names, ratings, phone numbers, street addresses, websites, and hours, with optional separately billed guest review rows from live /biz/{slug} pages. Search cards do not include contact — this Actor follows the business detail page so you get usable local-business leads.

Use it as a practical Yelp scraper / Yelp data extractor / Yelp API alternative for restaurants, dentists, hotels, plumbers, auto shops, and other local categories. Keep enrichDetails on, then download CSV / Excel / JSON — or call the Actor from Make, n8n, Zapier, Python, or the Apify API.

  • Search on Yelp (find_desc + find_loc; pagination start steps by 10)
  • Category via cflt= (restaurants, dentists, homeservices, auto, beautysvc, hotels, and more)
  • Business LDP /biz/{slug} — plaintext sidebar phone + street (no “Show phone” click); hours and geo when JSON-LD has them
  • Opened TLD markets for search + LDP leads: US, Canada, Australia, Germany, France, Ireland, Italy, Spain
  • Guest pages only — merchant email is usually absent (leadAbsences records that honestly)
  • Residential egress lives on the scrape worker — you do not send cookies or proxyUrl

Unofficial tool. Not affiliated with Yelp Inc. Collects guest / public pages a logged-out visitor can already see. It does not log in, send messages, place orders, or submit support tickets.

Empty {} fetches Yelp's public Privacy page for a deterministic one-item Store Test. Explicit search mode still falls back to ramen in Chicago, IL when its fields are blank.

Free Apify-plan users (developer policy): 10 runs / 200 results per run.


What can this Yelp scraper do?

Yelp Scraper extracts structured Yelp business data without you running a residential proxy or anti-bot stack. Give it a search term and a city (or a category + location), start the run, and get a spreadsheet of leads.

On the Apify platform you also get scheduling, monitoring, Dataset exports, webhooks, and API / integration access (Make, n8n, Zapier, LangChain).

Under the hood the Actor:

  1. Validates input and enforces free-tier caps on free Apify plans
  2. Calls a managed Cloud Run worker (WORKER_BASE_URL + WORKER_AUTH)
  3. The worker loads guest Yelp HTML and parses /biz leads
  4. Pushes Dataset rows plus INPUT_ECHO / RUN_SUMMARY

Default memory is 1024 MB. WORKER_PROVIDES_PROXY=1 — do not pass proxyUrl.


What Yelp data can I extract?

DataSearch SERP/biz LDP
Name / slug / URL✅✅
Rating / review count✅✅
Review body (guest snippet)❌✅ up to 5, 500 chars with includeReviews=true
Phone❌ (cards have none)✅ tel: / JSON-LD
Email❌❌ usually none on the page
Street / address❌✅
Website❌✅ (may wrap biz_redir)
Hours / geo—✅ when JSON-LD present
Categories✅✅

Identity key: /biz/{slug}. An opaque encid URL resolves to the slug. Do not invent business ids. Do not treat /map/{slug} as a list. Do not use city short paths (/sf) as a pager.

Yelp does not put phone or street on search cards. Keep enrichDetails=true (the default) or you will get names without contact.

This Actor does not scrape menus, photo galleries, events, collections, or the full paginated review feed. It is built for contactable local leads, not a complete Yelp clone.


Why scrape Yelp?

Yelp is still one of the densest public directories of local businesses: restaurants, medical, home services, auto, hotels, and shops, with ratings that people actually read. Typical uses:

  • Build an outreach / CRM list (name + phone + street) for a city and trade
  • Compare competitor ratings and hours in one neighborhood
  • Feed Make / n8n / Zapier / LangChain with structured Yelp rows instead of raw HTML
  • Combine with Google Maps Scraper when you need a second local source

1. Local lead lists (restaurants, dentists, plumbers)

In plain English: search a trade + city → get a table of names, phones, and street addresses for outreach or CRM import.

You give: findDesc=dentist, findLoc=Denver, CO, maxResults=20, enrichDetails=true.

You get back:

NamePhoneStreet
Example Dental+1…1200 Example Ave

2. Category coverage (cflt)

In plain English: scrape a Yelp vertical (hotels, auto, beautysvc, homeservices, eventservices) in one city without inventing keywords.

You give: searchType=category, cflt=hotels, findLoc=Portland, OR.

3. Multi-market Yelp data

In plain English: pin market to ca, au, de, fr, ie, it, or es to hit that TLD with a matching residential country. UK (yelp.co.uk) is routed but not smoke-opened — do not expect UK phones from the worker yet.

4. Feed automations and AI agents

In plain English: schedule the Actor or call it from Make / n8n / Zapier / LangChain → Dataset JSON (name, url, phones, address, hours, leadAbsences), plus review rows when requested.


More Actors like this

Need another local-business / maps / services source? Use the dedicated Actor — structured fields, better coverage, usually lower cost than a generic URL scrape.

Similar local-lead scrapers

Prefer a dedicated site scraper?

If your target has a specialized Actor below, use that first — usually cheaper and more structured than a generic URL scrape.

Local services & lead gen

Jobs & Freelance

E-commerce

Real Estate

Travel & Stays

Social & Content

Ads Intelligence

General tools

→ Full catalog in Related Actors below, or browse apify.com/lentic_clockss.

Need a custom site (listing + detail, your field list)? Submit a custom scraper request.


How to scrape Yelp (no code required)

  1. Click Try for free at the top of this page
  2. Enter a search term (findDesc) and a city (findLoc), or switch searchType to category and set cflt
  3. Leave enrichDetails on so each row follows /biz for phone and street
  4. Set maxResults (start small — 3 to 10 is enough to test)
  5. Click Start — rows appear in the Dataset tab
  6. Download CSV, Excel, or JSON

That's it. You can also schedule the run or call it from the API.

Input examples

US keyword search:

{
"searchType": "search",
"findDesc": "locksmith",
"findLoc": "Houston, TX",
"market": "us",
"maxResults": 5,
"enrichDetails": true
}

US category:

{
"searchType": "category",
"cflt": "dentists",
"findLoc": "Portland, OR",
"market": "us",
"maxResults": 5,
"enrichDetails": true
}

Canada TLD:

{
"searchType": "search",
"findDesc": "plumber",
"findLoc": "Toronto, ON",
"market": "ca",
"maxResults": 5,
"enrichDetails": true
}

Direct business URL:

{
"searchType": "detail",
"startUrls": ["https://www.yelp.com/biz/example-slug"],
"enrichDetails": true
}

How much does it cost to scrape Yelp?

This Actor uses pay-per-event pricing. You are charged for:

EventPrice
Actor Start (apify-actor-start)$0.005 per start
Result (apify-default-dataset-item)$3.00 / 1,000 results ($0.003 each on FREE/BRONZE)

Platform usage costs are included — you do not pay separate Apify compute for this Actor on top of the event prices above (User pays platform usage costs = No).

Volume discount tiers (per result)

Tier$/1,000per result
FREE*$3.00$0.003
BRONZE$3.00$0.003
SILVER$2.60$0.0026
GOLD$2.20$0.0022
PLATINUM$2.00$0.002
DIAMOND$1.60$0.0016

*FREE matches BRONZE for this Actor.

Example cost estimates (FREE/BRONZE)

Results collectedApprox. event cost*
100~$0.31
1,000~$3.01
10,000~$30.01

*Assumes one Actor start at default memory (1024 MB = one start event) plus $0.003 per Dataset item. Start billing can scale with allocated memory (one start event per GB, minimum one).

Empty / failed runs that write zero default-dataset rows are not billed as results (you still pay Actor Start).

Free plan limits

On a free Apify plan, this Actor enforces developer limits of 10 runs and 200 results per run. Upgrade to a paid Apify plan for unlimited runs (event prices still apply).

Is scraping Yelp free?

You can try the Actor on Apify's free plan subject to the run/result caps above. After that you pay per start and per Dataset row — not per compute unit.


What you get back

Each Dataset row is one Yelp business or, when includeReviews=true, one guest review:

maxResults is the most rows for each start URL. A scalar search, detail, or company mode counts as one input. Business and opt-in review rows share that input's allowance, and the whole run stops at your maximum total charge.

  • Name, slug, listing URL, rating, review count, categories
  • Phones (value + e164 when parseable)
  • Street / locality / region / postal / country
  • Website and hours
  • Optional guest review rows (cap 5 per detail page, includeReviews=false by default)
  • leadAbsences when a field is honestly missing (for example merchant email)

Download from the Dataset tab as CSV, Excel, or JSON.

RUN_SUMMARY.diagnostics includes listingsExtracted, contractDropped, shadowBlocked, sessionHealth, and challengeVendor. A challenge or an unrecognized page is not reported as a successful empty search. If optional detail enrichment fails, a verified search row can remain with detailError; a direct detail request never returns a slug-only placeholder. contractDropped counts rejected documents or candidate rows, not missing optional fields. paginationStopped=NO_NEW_LISTINGS means a repeated page added no new businesses. A supplied start is the initial offset.

Example row (fields shortened):

{
"name": "Example Locksmith",
"url": "https://www.yelp.com/biz/example-locksmith-houston",
"rating": 4.6,
"reviewCount": 42,
"phones": [{ "value": "+17135550100", "e164": "+17135550100" }],
"address": {
"street": "100 Example St",
"locality": "Houston",
"region": "TX",
"postalCode": "77002",
"country": "US"
},
"web": { "website": "https://example.com" },
"leadAbsences": { "emails": "商家邮箱本站无" }
}

Which countries work?

MarketHostSearch + /biz leadsNotes
USyelp.com✅Primary
CAyelp.ca✅Some service-area businesses have phone but no street
AUyelp.com.au✅
DEyelp.de✅
FRyelp.fr✅
IEyelp.ie✅
ITyelp.it✅
ESyelp.es✅
UKyelp.co.uk未验证Routed (market=uk pins GB); worker still 403/empty
NLyelp.nl未验证

Other TLD keys may exist in input; treat them as unopened until smoke-tested.


Connect to your tools

PlatformHow
Make.comSearch “Apify” → Run Actor → lentic_clockss/yelp-scraper
n8nApify node → Run Actor
ZapierApify integration → Run Actor
LangChainApifyActorsTool("lentic_clockss/yelp-scraper")
Python / NodeApify SDK or HTTPS
curl "https://api.apify.com/v2/acts/lentic_clockss~yelp-scraper/runs" \
-X POST \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"findDesc":"florist","findLoc":"Nashville, TN","maxResults":5,"enrichDetails":true}'

Results: GET https://api.apify.com/v2/datasets/{datasetId}/items?format=json


FAQ

Does this replace the official Yelp API?

It is an unofficial Yelp data extractor for guest pages. It is not the Fusion API, not Fusion keys, and not a Yelp partner product.

Why are phones empty on some rows?

Search cards have no phone. If enrichDetails is off, you only get SERP fields. Some listings (especially service-area businesses in Canada) have a phone but no street. leadAbsences explains the gap.

Can I scrape Yelp reviews?

Set includeReviews=true to emit guest-visible review snippets on the LDP as separately billed rows (JSON-LD + comment nodes), capped at 5 × 500 characters. The Actor does not click Write a review or paginate the full review feed.

Can I scrape Yelp messages or support tickets?

No. It does not click Message, Call, Claim, or Order, and it does not submit /contact hCaptcha tickets.

Do I need my own proxies?

No for normal runs. Residential egress is on the worker.

How is this different from a generic web scraper?

A generic scraper returns HTML. This Actor returns Yelp business rows with phones and addresses parsed from /biz. For Cloudflare-protected pages that are not Yelp, use Stealth Web Scraper.

When should I use Google Maps or Angi instead?

Use Google Maps Scraper for Maps places. Use Angi Scraper for Angi.com / Angie's List contractors. Use this Actor when the source of truth is Yelp search / category / /biz.

You are responsible for how you use the data. This Actor only collects guest-visible fields. Personal data can be regulated (GDPR and similar). Do not scrape if you lack a legitimate purpose. If unsure, ask a lawyer. See also Apify's note on is web scraping legal.


Input reference

FieldDefaultNotes
searchTypeprivacyDeterministic one-item Store Test default. category needs cflt; detail needs live bizSlug / startUrls; phone needs phoneNumber.
findDesc—Keyword. Explicit search mode falls back to ramen when blank.
findLoc—City / area. Explicit search/category mode falls back to Chicago, IL when blank.
bizSlug—Required for explicit detail mode unless a live /biz/ startUrl is supplied.
cflt—Category alias for searchType=category.
marketusOpened LDP: us/ca/au/de/fr/ie/it/es. uk/nl routed but 未验证.
enrichDetailstrueRequired for phone and street.
includeReviewsfalseOpt in to separately billed guest-review rows; they share each input's allowance with business rows.
reviewTerm—app_api only. Keyword filter passed to /reviews/search when non-empty.
reviewLimit20app_api only. Max review rows requested per business (1–100).
reviewOffset0app_api only. Review pagination offset.
includePhotosfalseapp_api only. Adds photos[] + mediaCount per business row via /business/media/v2.
photoLimit10app_api only. Max photo URLs per business (1–50).
registerDevicefalseapp_api only. POSTs /client/register once per run; result on diagnostics.credentialOutcome.
phoneNumber—Required for searchType=phone. Digits only are sent (min 7).
phoneCountryUSapp_api only. ISO country hint paired with phoneNumber.
communityQuestionsFirst5app_api only. first arg for the community-questions GraphQL query (1–20).
maxResults50Maximum and default rows per start URL or scalar input; Console prefill is 3. Free plan ≤ 200 rows for the whole run.
maxPages1Each page is start += 10.
startUrls[]Optional live yelp.com /search or /biz/ URLs. In detail mode, /search URLs expand their hits into detail fetches (capped by maxResults).

Full field help lives on the Input tab.


All public Actors from lentic_clockss. Click a name to open the Store detail page.

Local services & lead gen

Developer / Open source / AI

Jobs & Freelance

Real Estate

E-commerce & Retail

B2B & Wholesale Marketplaces

Food Delivery & Grocery

Tickets & Events

Travel & Stays

Social & Content

Ads Intelligence

General Tools

→ Browse the full profile: apify.com/lentic_clockss


Changelog

0.2.29 (2026-10-20)

  • registerDevice now installs issued bse/wdi cookies into the session jar (was: recorded but dropped). result.installed_cookies lists applied names.
  • includePresentation — opt-in POST /business/presentation across biz_ids; layout metadata merged under row.presentation.
  • photosFetched now counts rows actually enriched (was: raw photos_media_v2 call count).
  • GraphQL documentId constants can be overridden via YELP_GQL_DOCID_<NAME> env; graphqlDocidVersion diagnostic pins the APK version they came from.

0.2.28 (2026-10-20)

  • searchType=phone reverse lookup (phone → business via mobile GraphQL attributes surface).
  • reviewTerm / reviewLimit / reviewOffset — keyword-filtered reviews with per-business pagination.
  • includePhotos / photoLimit — attach photos[] + mediaCount per business row via /business/media/v2.
  • registerDevice — opt-in POST /client/register at run start (device credential hook, recorded on diagnostics.credentialOutcome).
  • communityQuestionsFirst — configurable GraphQL Q&A page size.
  • detail mode now expands /search startUrls into detail fetches.
  • GraphQL enrich across multiple businesses batched into a single POST (batch_enrich_many).
  • New enrich kinds: dishes, map_data, logo on top of features/hours/review_counts/summary/popular_items/vibe_check/community_questions/category/connections.

0.1.10 (2026-08-19)

  • README SEO pass (Apify README + description playbook; competitor keywords: without Yelp API, search/category/URL, phones & address)
  • More Actors like this (before How to use) + Related Actors catalog aligned with Store peers
  • Store title / SEO title / descriptions retargeted for Google + Store cards

0.1.9 (2026-08-19)

  • Pay-per-event: Actor Start $0.005 + result $3.00/1,000 with Store tiers; developer pays platform usage