Yelp Scraper API - Businesses, Emails, Reviews & Leads avatar

Yelp Scraper API - Businesses, Emails, Reviews & Leads

Pricing

from $4.00 / 1,000 business profiles

Go to Apify Store
Yelp Scraper API - Businesses, Emails, Reviews & Leads

Yelp Scraper API - Businesses, Emails, Reviews & Leads

Scrape Yelp business data without the Yelp API: 60+ fields per listing with e-mails and social profiles pulled from the business website, plus reviews, menus, Q&A, photos, hours, amenities, licences and health scores. One row per business. Export to CSV, JSON or Excel.

Pricing

from $4.00 / 1,000 business profiles

Rating

0.0

(0)

Developer

Raven

Raven

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Yelp Scraper API — Extract Yelp Business Data, Emails, Reviews & Menus

Scrape Yelp business listings without the Yelp API — from $4.00 per 1,000 businesses on paid plans ($6.00 on the free plan). Get 60+ fields per business: name, categories, phone, website, full address with coordinates, opening hours, amenities, verified licences, health inspection scores, photos, menus and Q&A — plus the e-mail address and social profiles pulled from the business's own website, and reviews nested in the same row. No login, no API key, no code, no proxies to configure.

Yelp scraper extracting Yelp business data, e-mail addresses, reviews and menus into JSON

Raven · Local & lead-gen suite   •  Yelp, Google Maps, website contacts, TripAdvisor
 Yelp Scraper
➤ You are here
 Google Maps
Places, emails, reviews
 Website Contacts
Emails, phones, socials
 TripAdvisor Scraper
Hotels, restaurants, reviews

Contents: What it does · Why use it · Data you get · Step by step · Past the 240 limit · E-mail lookup · Reviews · Input parameters · Input recipes · Output examples · Pricing · Integrations · AI agents / MCP · Real-time API · Use cases · Legality · Troubleshooting · FAQ

What does this Yelp Scraper do?

This actor is a Yelp API alternative: it reads the same public pages a visitor sees and hands you clean, flat records. Yelp's official Fusion API is restrictive — its reviews endpoint returns "up to three review excerpts for a business" (Yelp's own docs) and it needs an approved developer app. This scraper has no key, no quota of its own, and no 3-review ceiling.

Two modes, one input form:

ModeWhat a dataset row isUse it for
Businesses (default)One row per business, with its reviews, menu, Q&A and photos nested insideLead lists, market maps, competitor sets, enrichment
ReviewsOne row per review (flat)Sentiment analysis, NLP pipelines, review dashboards

Feed it any combination of:

  • Search terms × locations"plumber" in "San Francisco, CA", every pair runs as its own search
  • Yelp category aliasesplumbers, restaurants, dentists, matching Yelp's own category pages
  • Yelp business URLs, aliases or business IDshttps://www.yelp.com/biz/sotto-mare-san-francisco-4, sotto-mare-san-francisco-4, or the encrypted id
  • Yelp search URLs — paste a filtered search straight from your browser and every result in it is scraped

Why use this scraper?

  • E-mails and socials nobody else gives you. The actor opens the business's own website and extracts e-mail addresses plus Facebook, Instagram, X, LinkedIn, YouTube, TikTok and Telegram links. Yelp never publishes an e-mail — this is what turns a listing into a contactable lead.
  • 60+ fields per business, including the ones most scrapers skip: verified trade licences, health inspection results with the individual violations, service areas, neighbourhoods, timezone, "people also searched", and Yelp's own one-line editorial summary.
  • Businesses and their reviews in one run. Reviews arrive nested in the business row, so you never join two datasets or pay for two actors.
  • Reviews Yelp hides. Optionally collect the "not recommended" reviews that never count towards the visible rating — useful when auditing a business's real feedback.
  • Full menus with prices for restaurants and food businesses: section, item, price, description, photo and per-item review count.
  • 27 output languages. The same listing comes back as ["Specialty Food", "Delis"], ["Spezialitäten", "Deli"] or ["Żywność specjalistyczna"] — and every URL in the output is still a canonical www.yelp.com link.
  • Predictable row counts. 20 businesses means 20 rows, not 420. Everything that belongs to a business lives inside its row.
  • You never pay for failures. A listing that cannot be extracted returns a row explaining why, free of charge, and add-ons are skipped entirely when Yelp has nothing to give.
  • Set a hard budget. Give the run a maximum cost and it stops cleanly at your limit, keeping everything already collected.
Official Yelp Fusion APITypical Yelp scrapersThis actor
API key / approved appRequiredNot requiredNot required
Reviews per businessUp to 3 excerptsUsually a separate actorFull text, nested in the same row
E-mail addressesNot availableRarelyFrom the business website
Social profilesNot availableRarely7 networks
Menus with pricesNot availableSometimesYes
Community Q&ANot availableRarelyYes, with answers
Health inspectionsNot availableScore only, if at allScore + every violation
"Not recommended" reviewsNot availableNoYes, optional
Output languagesEnglish-centricUsually one27
ExportJSON onlyVariesJSON, CSV, Excel, XML, API

What data can you extract from Yelp?

Business record — 60+ fields

The dataset schema documents 101 fields across both record types. A rich listing fills 50–60 of them; a sparse one fewer, because Yelp simply has less. Empty fields are omitted, never returned as null.

GroupFields
Identityname, alias, businessId, url, alternateNames, categories, priceRange, summary
Contactsphone, website, email, emails, facebook, instagram, twitter, linkedin, youtube, tiktok, telegram
Locationaddress, addressLine1addressLine3, city, state, postalCode, countryCode, neighborhoods, latitude, longitude, timezone, serviceArea
Ratingsrating, reviewCount, reviewHighlights, reviewSnippet
Hourshours (one line per weekday), specialHours, isClosed
Amenitiesamenities (localised labels), attributes (stable aliases → true/false), highlights
Trust signalsisClaimed, isAdvertiser, yelpGuaranteed, verifiedLicenses, healthInspections, infoLastVerified
From the owneraboutHistory, yearEstablished, specialties, ownerName, ownerBio
Mediaphotos, photoCount, primaryPhoto, videos
Menumenu (section, name, price, description, photo, review count), menuUrl, externalMenuUrl
Q&Aquestions (with answers, authors, helpful votes), questionCount
Reviewsreviews, notRecommendedReviews
Search contextsearchTerm, searchLocation, searchRank, isAd, peopleAlsoSearched, searchAppearances, popularityNote

Review record — 25 fields

reviewId, rating, text, language, publishedAt, experienceDate, authorName, authorId, authorPhotoUrl, authorLocation, authorReviewCount, authorFriendCount, authorPhotoCount, authorIsElite, reactions (Helpful / Thanks / Love this / Oh no), checkInCount, isFirstReview, photos, ownerReplyText, ownerReplyDate, url, plus the business it belongs to.

Which fields are always there?

Yelp only has what owners and reviewers give it, so some fields are conditional. Rather than make you find out the hard way:

FieldAvailabilityDepends on
name, alias, businessId, url, categories, rating, reviewCount✅ Always
address, city, countryCode, hours, amenities, attributes✅ Almost alwaysPresent on virtually every claimed listing
latitude, longitude⚠️ UsuallyBusinesses with a street address; service-area businesses have no map
phone, website, priceRange⚠️ UsuallyThe owner having entered them
email, emails, socials⚠️ SometimesThe business having a website that publishes an address
menu⚠️ SometimesFood businesses with a Yelp-hosted menu
healthInspections⚠️ SometimesRegions where authorities publish inspections
verifiedLicenses⚠️ SometimesTrades and contractors
yearEstablished, specialties, ownerName, ownerBio⚠️ SometimesThe owner filling in "From the business"
questions⚠️ SometimesThe listing having community Q&A

Empty fields are omitted rather than returned as null, which keeps CSV exports free of dead columns. All 101 possible fields are documented on the Output tab.

Not supported: Yelp user profiles, Yelp Collections and lists, and the Yelp events directory. This actor covers businesses, their reviews, menus, photos and Q&A.

How to scrape Yelp step by step

  1. Click Try for free at the top of this page. A new Apify account comes with $5 in free monthly credits — no card required, enough for roughly 660 businesses with e-mails or ~7,000 reviews.
  2. Type a search term and a location — for example plumber and San Francisco, CA. Or paste Yelp URLs into Direct Yelp URLs instead.
  3. Set Max businesses per search. Yelp serves at most 240 results per query, so add more cities or postcodes to go wider.
  4. Pick your add-ons. Leave Find e-mail addresses on for lead lists; set Max reviews if you want review text; turn on Include menu items for restaurants.
  5. Click Start. Rows appear within seconds and keep arriving — the dataset is never held back until the end.
  6. Export from the Storage tab as JSON, CSV, Excel, XML or JSONL, or pull it from the API.

How to get more than 240 results from Yelp

Yelp caps a single search at 240 results and then stops paginating — that ceiling is Yelp's, not the scraper's, and every Yelp tool hits it. The way around it is to split the search rather than deepen it:

  • Split by neighbourhood or postcode instead of one big city: "SoHo, New York, NY", "Williamsburg, Brooklyn, NY", "10001", "10002" — each one gets its own 240-result budget.
  • Split by category. plumbers, hvac, waterheaterinstallrepair as separate categories entries return overlapping-but-different sets.
  • Split by search term. "plumber", "emergency plumber", "drain cleaning" in the same city surface different businesses.
  • Every term × location pair runs as its own search, so 3 terms × 5 postcodes gives you 15 searches — up to 3,600 businesses — from one run. Duplicates across searches are removed before anything is charged.

How the e-mail lookup works

Yelp shows a website but never an e-mail. When Find e-mail addresses is on, the actor visits the business's own site — the homepage first, then the contact/about pages that page links to — and extracts every valid address it finds, plus social profiles.

  • Addresses on the business's own domain are ranked first, so email is the one worth writing to rather than the web agency's address in the footer; emails holds everything found.
  • In test runs roughly half of the listings that have a website yield at least one address. The rest genuinely publish none.
  • Listings with no website at all cost nothing extra — the lookup is only charged when there is a site to read.
  • Junk is filtered out: noreply@, template placeholders, tracking-pixel domains and image filenames never reach your dataset.

Reviews: nested or flat, your choice

Businesses mode nests reviews inside the business row — one row per company, no joins, and the row count always matches the number of businesses you asked for.

Reviews mode gives the flat shape instead: one row per review, with the business name and alias attached to every row. Use it when you are feeding a sentiment model or a review dashboard.

Both modes support:

  • 6 sort orders — Yelp's own relevance sort, newest first, oldest first, highest rating, lowest rating, or Elite reviewers first
  • Star filtering — collect only 1- and 2-star reviews to build a complaint feed
  • "Not recommended" reviews — the ones Yelp filters out of the main feed, in their own notRecommendedReviews array
  • Owner replies — the business's public response, when there is one

Input parameters

FieldTypeDefaultWhat it does
scrapeTypeselectsearchsearch = one row per business with reviews nested; reviews = one row per review
searchTermsarrayKeywords to search, e.g. plumber, italian restaurant
locationsarrayCities, regions or postcodes. Required whenever you use search terms or categories
categoriesarrayYelp category aliases (plumbers, restaurants, dentists) for exact category matching
maxResultsinteger20Businesses per term × location pair (Yelp's own ceiling is 240)
directUrlsarrayYelp business URLs, aliases, business IDs, or Yelp search URLs
yelpDomainselectwww.yelp.comResults language — 27 options; does not limit which countries are scraped
includeEmailsbooleantrueVisit each business website and extract e-mails + social profiles
maxPhotosinteger20Photo URLs per business (0 = none)
maxQuestionsinteger0Community Q&A with answers, up to 10
includeMenubooleanfalseFull Yelp menu with prices for food businesses
includeAdsbooleanfalseAlso return Yelp's sponsored placements
maxReviewsinteger0Reviews per business (0 = none)
reviewsSortselectYelp sortDATE_DESC, DATE_ASC, RATING_DESC, RATING_ASC, ELITES_DESC
reviewRatingsarrayallKeep only these star ratings, e.g. ["1", "2"]
includeNotRecommendedReviewsbooleanfalseAlso collect Yelp's hidden "not recommended" reviews
proxyConfigurationproxyResidentialLeave as-is — proxy rotation and anti-bot handling are already built in

Ready-to-paste input recipes

1. Local lead list with e-mails — the cheapest lead run: contacts only, no photos, no reviews.

{
"scrapeType": "search",
"searchTerms": ["dentist", "orthodontist"],
"locations": ["Chicago, IL", "Houston, TX", "Phoenix, AZ"],
"maxResults": 240,
"includeEmails": true,
"maxPhotos": 0,
"maxReviews": 0,
"yelpDomain": "www.yelp.com"
}

2. Restaurants with menus and prices

{
"scrapeType": "search",
"searchTerms": ["italian restaurant"],
"locations": ["San Francisco, CA"],
"maxResults": 50,
"includeMenu": true,
"maxPhotos": 10,
"maxReviews": 10,
"yelpDomain": "www.yelp.com"
}

3. Reputation monitoring — newest 1- and 2-star reviews

{
"scrapeType": "search",
"directUrls": [
"https://www.yelp.com/biz/molinari-delicatessen-san-francisco",
"https://www.yelp.com/biz/gary-danko-san-francisco"
],
"maxReviews": 100,
"reviewsSort": "DATE_DESC",
"reviewRatings": ["1", "2"],
"includeNotRecommendedReviews": true,
"maxPhotos": 0,
"includeEmails": false
}

4. Flat review table for sentiment analysis

{
"scrapeType": "reviews",
"searchTerms": ["sushi"],
"locations": ["Los Angeles, CA"],
"maxResults": 20,
"maxReviews": 500,
"reviewsSort": "DATE_DESC",
"includeEmails": false,
"maxPhotos": 0
}

5. Scrape a filtered Yelp search URL as-is — apply the filters in your browser, copy the address bar, paste it here.

{
"scrapeType": "search",
"directUrls": [
"https://www.yelp.com/search?find_desc=coffee&find_loc=Berlin%2C+Germany"
],
"maxResults": 100,
"yelpDomain": "www.yelp.de",
"includeEmails": true
}

6. Full audit of one business — everything Yelp has

{
"scrapeType": "search",
"directUrls": ["https://www.yelp.com/biz/sotto-mare-san-francisco-4"],
"maxReviews": 1000,
"includeNotRecommendedReviews": true,
"maxQuestions": 10,
"includeMenu": true,
"maxPhotos": 200,
"includeEmails": true
}

7. Category pages by Yelp alias, across a metro area

{
"scrapeType": "search",
"categories": ["plumbers", "hvac"],
"locations": ["Austin, TX"],
"maxResults": 240,
"includeAds": false,
"includeEmails": true,
"maxPhotos": 0
}

Output examples

Business row (trimmed — a real record from a live run)

{
"type": "business",
"businessId": "8dUaybEPHsZMgr1iKgqgMQ",
"alias": "sotto-mare-san-francisco-4",
"name": "Sotto Mare",
"url": "https://www.yelp.com/biz/sotto-mare-san-francisco-4",
"rating": 4.3,
"reviewCount": 5978,
"priceRange": "$$$",
"categories": ["Seafood", "Italian", "Bars", "Nightlife", "Restaurants"],
"phone": "(415) 398-3181",
"website": "http://www.sottomaresf.com/",
"email": "sottomare@outlook.com",
"emails": ["sottomare@outlook.com"],
"facebook": "https://www.facebook.com/sotto.mare.sf/",
"instagram": "https://www.instagram.com/explore/locations/57/sotto-mare/",
"address": "552 Green St, San Francisco, CA 94133, United States",
"city": "San Francisco",
"state": "CA",
"postalCode": "94133",
"countryCode": "US",
"neighborhoods": ["North Beach/Telegraph Hill"],
"latitude": 37.799718,
"longitude": -122.408342,
"timezone": "America/Los_Angeles",
"isClaimed": true,
"isAdvertiser": true,
"summary": "Old-school seafood spot known for hearty cioppino and fresh oysters.",
"hours": [
{ "day": "Mon", "hours": "11:30 AM - 9:00 PM" },
{ "day": "Tue", "hours": "11:30 AM - 9:00 PM" }
],
"amenities": ["Takes reservations", "Offers delivery", "Offers take-out", "Many vegetarian options"],
"attributes": {
"RestaurantsReservations": true,
"RestaurantsDelivery": true,
"RestaurantsTakeOut": true,
"num_vegetarian_options": true
},
"healthInspections": [
{
"score": "Pass",
"date": "2026-02-20T08:00:00.000Z",
"violations": ["Standard not met: NO INSECTS, RODENTS, BIRDS OR NONSERVICE ANIMALS"]
}
],
"photoCount": 7896,
"questionCount": 75,
"primaryPhoto": "https://s3-media0.fl.yelpcdn.com/bphoto/o3hIcGLMxV_5ynxEjGWGrw/o.jpg",
"reviews": [ "..." ],
"menu": [ "..." ],
"scrapedAt": "2026-08-19T21:17:58.387Z"
}

A review, as it appears inside reviews

{
"reviewId": "FrWrh3IW9z-eHsVaqbjwEQ",
"rating": 5,
"text": "Really enjoyed the atmosphere & food, service was good as well.\n\n++ for free bread service, which is a dying art at most places.",
"language": "en",
"publishedAt": "2026-07-19T14:01:02-07:00",
"authorName": "Beatriz S.",
"authorLocation": "Northeast Orlando, Orlando, FL",
"authorReviewCount": 1,
"authorFriendCount": 155,
"authorIsElite": false,
"checkInCount": 0,
"url": "https://www.yelp.com/biz/sotto-mare-san-francisco-4?hrid=FrWrh3IW9z-eHsVaqbjwEQ"
}
[
{
"section": "Appetizers",
"name": "Oysters on Half Shell",
"price": "$2.00",
"photoUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/rRn9hvJb2n8Dvc3XEWhDXg/60s.jpg",
"reviewCount": 16,
"itemPath": "/menu/sotto-mare-san-francisco-4/item/oysters-on-half-shell"
},
{
"section": "Appetizers",
"name": "Clam on Half Shell",
"price": "$1.50",
"reviewCount": 3
}
]

A question with its answers, as it appears inside questions

{
"questionId": "P7A9MlZSlBXaM5dyapwBQA",
"question": "How to do the reservation?",
"askedBy": "David C.",
"platform": "iphone",
"answerCount": 4,
"answers": [
{
"answerId": "-ElbFOze65IPFkDqpnwwGw",
"text": "You have to call them for rezzies. Leave a vmail and they'll return your call.",
"authorName": "Cherylynn N.",
"helpfulVotes": 1,
"publishedAt": "2026-06-04T03:01:27Z"
}
]
}

How much does it cost to scrape Yelp?

Pay per event — no monthly fee, no platform usage charges on top. Prices drop on every paid Apify plan.

EventFree planPaid plans (from)When it is charged
Business profile$0.006$0.004Per business returned, with all 60+ fields
Review$0.0007$0.0004Per review returned
E-mail & social lookup$0.0015$0.0009Only when a business has a website to check
Menu$0.006$0.004Once per business, covering every menu item
Questions & answers$0.003$0.0019Once per business, covering every question
Extra photos page$0.0045$0.003Only beyond the ~40 photos that come with the profile
Actor start$0.001$0.0001Once per run

What that costs in practice

JobCalculation (paid plans)Free planPaid plans
1,000 businesses, no e-mail lookup1,000 × $0.004$6.00$4.00
1,000 businesses + e-mails & socials1,000 × ($0.004 + $0.0009)$7.50$4.90
1,000 businesses + 20 reviews each1,000 × $0.0049 + 20,000 × $0.0004$21.50$12.90
10,000 reviews from 50 businesses50 × $0.004 + 10,000 × $0.0004$7.30$4.20
100 restaurants + menus + Q&A + e-mails100 × ($0.004 + $0.0009 + $0.004 + $0.0019)$1.65$1.08

On the free plan, Apify's $5 monthly credits cover roughly 660 businesses with e-mails, 833 businesses without the lookup, or ~7,000 reviews — every month, no card required.

Cheaper than it looks when you want reviews. Most Yelp tools price business data and review data as two separate actors, so a business plus 20 reviews means two runs and two bills. Here it is one run: a business with 20 reviews costs $0.012 on a paid plan.

Three things keep the bill honest:

  • Failed rows are never charged. A listing that cannot be extracted returns a row explaining why, for free.
  • Add-ons are skipped when there is nothing to fetch — no website means no e-mail charge, no Yelp menu means no menu charge, no Q&A means no Q&A charge.
  • Set Max total charge in the run options and the scraper stops cleanly at your limit, keeping everything already collected.

All of it is all-inclusive: the price above is the whole price.

Integrations

Connect Yelp data to whatever you already use — no glue code:

  • Google Sheets — push new rows straight into a spreadsheet
  • Make and Zapier — trigger on run finish and fan out to 5,000+ apps
  • n8n — self-hosted automation with the Apify node
  • Slack and email — get notified when a run finishes
  • Webhooks — POST the dataset to your own endpoint the moment a run completes
  • API clients for Python and JavaScript — start runs and read datasets from your own code
  • Schedules — run the same input hourly, daily or weekly to track ratings and new reviews over time

Use with AI agents (MCP)

This actor works as a tool for LLM agents through the Apify MCP server — point Claude, Cursor, VS Code or any MCP-capable client at https://mcp.apify.com and the agent can call it directly.

Then just ask:

"Find the 20 top-rated plumbers in Austin, TX on Yelp, get their e-mail addresses and phone numbers, and give me a table sorted by rating."

The agent picks the input, runs the actor and reads the dataset back on its own.

Real-time API (Standby mode)

Need Yelp data inside a request instead of a batch run? The Actor also runs in Standby mode — a always-warm HTTP service that answers with JSON directly, no run to start and no dataset to poll. The Standby tab on this page renders the full OpenAPI 3 schema and lets you fire requests from the browser.

EndpointWhat it returns
GET /search?searchTerm=plumber&location=San+Francisco,+CA&limit=10Full business profiles for a search
GET /business?url=https://www.yelp.com/biz/sotto-mare-san-francisco-4One business by URL, alias or business id
GET /reviews?url=sotto-mare-san-francisco-4&limit=20&sort=DATE_DESCA flat list of reviews for one business
GET /Service info and the current limits

Every input option works as a query parameter — includeEmails, maxReviews, maxPhotos, maxQuestions, includeMenu, includeNotRecommended, sort, ratings, language:

$curl "https://pro100chok--yelp-scraper.apify.actor/search?searchTerm=dentist&location=Chicago,+IL&limit=5&includeEmails=true" -H "Authorization: Bearer $APIFY_TOKEN"
{
"searchTerm": "dentist",
"location": "Chicago, IL",
"count": 5,
"data": [ { "name": "…", "email": "…", "phone": "…", "rating": 4.6 } ]
}

Because a Standby call has to answer inside one HTTP request, its limits are lower than a batch run: 50 businesses per search, 200 reviews, 60 photos, 10 questions, and 270 seconds per request. Anything bigger belongs in a normal run. Pricing is identical — the same pay-per-event charges, so you are never billed twice for the same data.

  • Lead generation — build outbound lists of local businesses with a real e-mail address, phone and website, filtered by category, city and rating
  • Local SEO agencies — audit which prospects have unclaimed listings, no website or a sub-4.0 rating, and pitch them
  • Reputation management — track new reviews for your own locations, including the ones Yelp hides, and alert on 1- and 2-star arrivals
  • Restaurant and hospitality intelligence — menu pricing, popular dishes, health inspection history and amenity coverage across a metro area
  • Competitor benchmarking — rating, review velocity, price band, amenities and sponsored status for every rival in a category
  • Market research — category density and price distribution by neighbourhood before choosing a location
  • Data enrichment — match a CRM list against Yelp by URL or alias and fill in hours, categories, coordinates and contacts
  • Sentiment analysis and NLP — thousands of full-text reviews with author metadata, ready for a model
  • Academic research — reproducible review corpora with rating distributions and reviewer profiles

Scraping publicly available data is generally legal, and this actor only reads pages any visitor can see — no login, no private data, nothing behind an account.

Reviews and reviewer profiles do contain personal data (display names, locations, profile photos), which is protected by the GDPR in the EU, the CCPA in California, and similar rules elsewhere. You should not scrape or store personal data without a legitimate reason, you are the data controller for whatever you collect, and you should keep only the fields you actually need with a sensible retention policy. If you are unsure, take legal advice.

In the United States, the Ninth Circuit's ruling in hiQ Labs v. LinkedIn held that scraping data that is publicly accessible — with no login required — does not violate the Computer Fraud and Abuse Act. That is the category this actor operates in, though it is not legal advice and says nothing about how you may then use personal data.

For a fuller picture, read Apify's guide on whether web scraping is legal.

Troubleshooting

Yelp serves at most 240 results per search query, and a narrow term in a small town may have far fewer. Split the search by postcode, neighbourhood, category or keyword — each pair gets its own budget. Duplicates across searches are removed before billing.

Getting fewer reviews than the business shows?

The count on the Yelp page includes reviews Yelp filters out of the main feed. Turn on Include not-recommended reviews to collect those too. Also check whether Only these star ratings is set — it silently narrows the feed.

A run returned no results at all

Check that Locations is filled in whenever you use search terms or categories — Yelp has no worldwide search, and a term with no location cannot run. If you pasted URLs, make sure they are business or search URLs (/biz/… or /search?…), not user profiles or collections.

Some fields are empty

That is Yelp, not the scraper — see Which fields are always there?. Empty values are omitted, so a missing key means Yelp published nothing there.

The run cost more than expected

Reviews are the usual reason: Max reviews applies per business, so 100 businesses × 50 reviews is 5,000 review events. Set Max total charge in the run options to cap any run, and switch add-ons off in the input if you do not need menus, Q&A or extra photos.

FAQ

Does Yelp have a public API?

Yes — the Yelp Fusion API — but it is restrictive. It requires an approved developer app, and its reviews endpoint returns "up to three review excerpts for a business" rather than full review text. This actor needs no key and has no 3-review ceiling.

Do I need a Yelp API key or a Yelp account?

No. No key, no login, no cookies. Paste a search term or a URL and run it.

Do I need to set up proxies?

No. Proxy rotation and anti-bot handling are built in and included in the price. The default configuration is the right one for almost everyone.

Yelp itself serves at most 240 results per search query. To collect more, split the search by neighbourhood, postcode, category or keyword — see How to get more than 240 results.

Can I scrape all reviews of a Yelp business?

Yes. Set Max reviews as high as you need; review pages are fetched in parallel, so even a business with several thousand reviews finishes quickly. For very large pulls use Reviews mode, which writes one row per review.

Can I get Yelp business e-mail addresses?

Yes — this is the actor's main differentiator. It reads the business's own website and extracts e-mail addresses plus seven social networks. Yelp never publishes an e-mail itself, so no Yelp-only scraper can give you one.

Why did I get fewer results than the number I asked for?

Three usual reasons: Yelp's 240-per-search ceiling, a business genuinely having fewer reviews than your Max reviews value, or a narrow search that Yelp simply has few matches for. Splitting the search by location or category is the fix.

Why are some fields empty or missing?

Because Yelp does not have them. Health inspections exist only where authorities publish them, menus only for food businesses, licences mostly for trades, yearEstablished only when the owner filled it in. Empty fields are omitted rather than returned as null, so CSV exports stay clean.

Will I be charged for URLs that return nothing?

No. A listing that cannot be extracted returns a row explaining why and is not charged. Add-ons you enabled are also skipped — and not charged — when Yelp has nothing to give.

Can I export Yelp data to CSV or Excel?

Yes. Every run's dataset downloads as CSV, Excel, JSON, JSONL, XML or HTML, or you can read it from the API. Records are flat single-level objects, so a CSV opens in Excel or Google Sheets with no cleanup.

In Businesses mode it is not: 20 businesses means 20 rows, because reviews, menus, photos and Q&A are nested inside each row. Only Reviews mode produces one row per review.

Can I scrape Yelp in a language other than English?

Yes — 27 output languages, chosen with Results language. Categories, amenities and opening hours come back in that language while the business data itself is unchanged, and every URL stays a www.yelp.com link.

Can I scrape United States businesses?

Yes, and it is the default. Business data for US listings is the most complete Yelp has: phone in US format, US address, $-based price bands, coordinates and health inspections.

Yelp's software filters some reviews out of a business's main feed and its visible rating, parking them behind a "not recommended" link. Turn on Include not-recommended reviews and they arrive in their own notRecommendedReviews array — often the more candid half of the feedback.

Can I monitor a business for new reviews automatically?

Yes. Save your input as a task and attach an Apify Schedule (hourly, daily, weekly), then use a webhook or the Slack/email integration to be notified. Sort by newest first so each run starts with the latest reviews.

Can I scrape a Yelp search URL with filters already applied?

Yes. Apply the filters you want in your browser, copy the URL from the address bar and paste it into Direct Yelp URLs — the filters are preserved and every result is scraped.

Can I call this as a live API instead of starting a run?

Yes — see Real-time API (Standby mode). The Actor keeps an HTTP server warm and answers GET /search, GET /business and GET /reviews with JSON in the response body. The Standby tab on this page documents every parameter and can send test requests for you.

Can I use this from Python or JavaScript?

Yes. Start runs and read datasets with the Apify Python client or the JavaScript client, or call the REST API directly.

Feedback & support

Found a bug, a missing field, or a filter you need? Open a ticket on the Issues tab of this actor — include your run URL and the input you used, and it gets looked at quickly. Feature requests are welcome; several fields in the list above started as user requests.

More scrapers by Raven

Local business & reviews

SEO & web intelligence

Social media & ads

E-commerce

Real estate

Tags: Yelp Scraper · Yelp API · Yelp API alternative · Yelp business scraper · Yelp reviews scraper · Yelp data extraction · Yelp email scraper · Yelp leads · Yelp menu scraper · local business data · lead generation · local SEO · reputation management · sentiment analysis · competitor analysis · web scraping · restaurant data · business listings · contact scraper · market research