Yelp Scraper API - Businesses, Emails, Reviews & Leads
Pricing
from $4.00 / 1,000 business profiles
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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.

| Raven · Local & lead-gen suite • Yelp, Google Maps, website contacts, TripAdvisor | |||
|
➤ You are here |
Places, emails, reviews |
Emails, phones, socials |
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:
| Mode | What a dataset row is | Use it for |
|---|---|---|
| Businesses (default) | One row per business, with its reviews, menu, Q&A and photos nested inside | Lead lists, market maps, competitor sets, enrichment |
| Reviews | One 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 aliases —
plumbers,restaurants,dentists, matching Yelp's own category pages - Yelp business URLs, aliases or business IDs —
https://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 canonicalwww.yelp.comlink. - ✅ 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 API | Typical Yelp scrapers | This actor | |
|---|---|---|---|
| API key / approved app | Required | Not required | Not required |
| Reviews per business | Up to 3 excerpts | Usually a separate actor | Full text, nested in the same row |
| E-mail addresses | Not available | Rarely | From the business website |
| Social profiles | Not available | Rarely | 7 networks |
| Menus with prices | Not available | Sometimes | Yes |
| Community Q&A | Not available | Rarely | Yes, with answers |
| Health inspections | Not available | Score only, if at all | Score + every violation |
| "Not recommended" reviews | Not available | No | Yes, optional |
| Output languages | English-centric | Usually one | 27 |
| Export | JSON only | Varies | JSON, 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.
| Group | Fields |
|---|---|
| Identity | name, alias, businessId, url, alternateNames, categories, priceRange, summary |
| Contacts ⭐ | phone, website, email, emails, facebook, instagram, twitter, linkedin, youtube, tiktok, telegram |
| Location | address, addressLine1–addressLine3, city, state, postalCode, countryCode, neighborhoods, latitude, longitude, timezone, serviceArea |
| Ratings | rating, reviewCount, reviewHighlights, reviewSnippet |
| Hours | hours (one line per weekday), specialHours, isClosed |
| Amenities | amenities (localised labels), attributes (stable aliases → true/false), highlights |
| Trust signals | isClaimed, isAdvertiser, yelpGuaranteed, verifiedLicenses, healthInspections, infoLastVerified |
| From the owner | aboutHistory, yearEstablished, specialties, ownerName, ownerBio |
| Media | photos, photoCount, primaryPhoto, videos |
| Menu | menu (section, name, price, description, photo, review count), menuUrl, externalMenuUrl |
| Q&A | questions (with answers, authors, helpful votes), questionCount |
| Reviews | reviews, notRecommendedReviews |
| Search context | searchTerm, 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:
| Field | Availability | Depends on |
|---|---|---|
name, alias, businessId, url, categories, rating, reviewCount | ✅ Always | — |
address, city, countryCode, hours, amenities, attributes | ✅ Almost always | Present on virtually every claimed listing |
latitude, longitude | ⚠️ Usually | Businesses with a street address; service-area businesses have no map |
phone, website, priceRange | ⚠️ Usually | The owner having entered them |
email, emails, socials | ⚠️ Sometimes | The business having a website that publishes an address |
menu | ⚠️ Sometimes | Food businesses with a Yelp-hosted menu |
healthInspections | ⚠️ Sometimes | Regions where authorities publish inspections |
verifiedLicenses | ⚠️ Sometimes | Trades and contractors |
yearEstablished, specialties, ownerName, ownerBio | ⚠️ Sometimes | The owner filling in "From the business" |
questions | ⚠️ Sometimes | The 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
- 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.
- Type a search term and a location — for example
plumberandSan Francisco, CA. Or paste Yelp URLs into Direct Yelp URLs instead. - Set Max businesses per search. Yelp serves at most 240 results per query, so add more cities or postcodes to go wider.
- 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.
- Click Start. Rows appear within seconds and keep arriving — the dataset is never held back until the end.
- 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,waterheaterinstallrepairas separatecategoriesentries 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 postcodesgives 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
emailis the one worth writing to rather than the web agency's address in the footer;emailsholds 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
notRecommendedReviewsarray - Owner replies — the business's public response, when there is one
Input parameters
| Field | Type | Default | What it does |
|---|---|---|---|
scrapeType | select | search | search = one row per business with reviews nested; reviews = one row per review |
searchTerms | array | — | Keywords to search, e.g. plumber, italian restaurant |
locations | array | — | Cities, regions or postcodes. Required whenever you use search terms or categories |
categories | array | — | Yelp category aliases (plumbers, restaurants, dentists) for exact category matching |
maxResults | integer | 20 | Businesses per term × location pair (Yelp's own ceiling is 240) |
directUrls | array | — | Yelp business URLs, aliases, business IDs, or Yelp search URLs |
yelpDomain | select | www.yelp.com | Results language — 27 options; does not limit which countries are scraped |
includeEmails | boolean | true | Visit each business website and extract e-mails + social profiles |
maxPhotos | integer | 20 | Photo URLs per business (0 = none) |
maxQuestions | integer | 0 | Community Q&A with answers, up to 10 |
includeMenu | boolean | false | Full Yelp menu with prices for food businesses |
includeAds | boolean | false | Also return Yelp's sponsored placements |
maxReviews | integer | 0 | Reviews per business (0 = none) |
reviewsSort | select | Yelp sort | DATE_DESC, DATE_ASC, RATING_DESC, RATING_ASC, ELITES_DESC |
reviewRatings | array | all | Keep only these star ratings, e.g. ["1", "2"] |
includeNotRecommendedReviews | boolean | false | Also collect Yelp's hidden "not recommended" reviews |
proxyConfiguration | proxy | Residential | Leave 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"}
Menu items, as they appear inside menu
[{"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.
| Event | Free plan | Paid plans (from) | When it is charged |
|---|---|---|---|
| Business profile | $0.006 | $0.004 | Per business returned, with all 60+ fields |
| Review | $0.0007 | $0.0004 | Per review returned |
| E-mail & social lookup | $0.0015 | $0.0009 | Only when a business has a website to check |
| Menu | $0.006 | $0.004 | Once per business, covering every menu item |
| Questions & answers | $0.003 | $0.0019 | Once per business, covering every question |
| Extra photos page | $0.0045 | $0.003 | Only beyond the ~40 photos that come with the profile |
| Actor start | $0.001 | $0.0001 | Once per run |
What that costs in practice
| Job | Calculation (paid plans) | Free plan | Paid plans |
|---|---|---|---|
| 1,000 businesses, no e-mail lookup | 1,000 × $0.004 | $6.00 | $4.00 |
| 1,000 businesses + e-mails & socials | 1,000 × ($0.004 + $0.0009) | $7.50 | $4.90 |
| 1,000 businesses + 20 reviews each | 1,000 × $0.0049 + 20,000 × $0.0004 | $21.50 | $12.90 |
| 10,000 reviews from 50 businesses | 50 × $0.004 + 10,000 × $0.0004 | $7.30 | $4.20 |
| 100 restaurants + menus + Q&A + e-mails | 100 × ($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.
| Endpoint | What it returns |
|---|---|
GET /search?searchTerm=plumber&location=San+Francisco,+CA&limit=10 | Full business profiles for a search |
GET /business?url=https://www.yelp.com/biz/sotto-mare-san-francisco-4 | One business by URL, alias or business id |
GET /reviews?url=sotto-mare-san-francisco-4&limit=20&sort=DATE_DESC | A 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.
Popular use cases
- 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
Is it legal to scrape Yelp?
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
Getting fewer businesses than Max businesses per search?
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.
How many businesses can I scrape from one search?
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.
Why is the row count different from Max businesses per search?
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.
What is the difference between recommended and "not recommended" reviews?
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
Google Maps Scraper — Places, emails, reviews, photos
Website Contact Scraper — Bulk emails, phones, socials
Trustpilot Scraper — Reviews, companies, TrustScore
TripAdvisor Scraper — Hotels, restaurants, reviews
G2 Scraper — Software reviews and competitors
Booking.com Scraper — Hotels, prices, reviews
SEO & web intelligence
Ahrefs SEO Scraper — DR, backlinks, keywords
Semrush Scraper — Traffic, authority, backlinks
SimilarWeb Scraper — Website traffic and rankings
Google Jobs Scraper — Salaries, apply links
Social media & ads
Instagram Scraper — Profiles, posts, comments
TikTok Profile Scraper — Profiles, contacts, analytics
YouTube Scraper — Videos, transcripts, comments
Reddit Scraper — Posts, comments, subreddits
Threads Scraper — Posts, profiles, replies
Pinterest Scraper — Pins, profiles, boards
Facebook Ads Library — Meta and Instagram ad spy
E-commerce
Amazon Scraper — Products, reviews, sellers
AliExpress Scraper — Products, variants, sellers
Alibaba Scraper — Products, suppliers, prices
TikTok Shop Scraper — Products and shop analytics
RedNote Scraper — Notes, creators, comments
Real estate
Zillow Scraper — Listings and agent leads
Realtor.com Scraper — Listings, agents, reviews
Apartments.com Scraper — Rentals, prices, reviews
Idealista Scraper — Properties and agency contacts
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