Yelp Scraper: Business Data, Reviews, Hidden Reviews & Menus
Pricing
from $0.40 / 1,000 reviews
Yelp Scraper: Business Data, Reviews, Hidden Reviews & Menus
Scrape Yelp business profiles, ratings, hours, phone, website and photos, plus every review, including the not recommended and removed reviews Yelp hides from the public page. Search any city by keyword, pull full menus with prices. No Yelp account or proxy setup.
Pricing
from $0.40 / 1,000 reviews
Rating
0.0
(0)
Developer
Sourabh Kumar
Maintained by CommunityActor stats
0
Bookmarked
6
Total users
3
Monthly active users
12 hours ago
Last modified
Categories
Features
Share
Yelp scraper: reviews, hidden reviews, business data, search and more
Get Yelp data six ways: reviews, the reviews Yelp hides, business details, keyword search, photos and menus. Paste Yelp business links or a keyword and a city, press Start, and download a clean spreadsheet.
From $0.50 per 1,000 reviews (from 12 November 2026; $3.00 per 1,000 results until then). No proxy setup, no browser, no Yelp account needed.
Works on any Yelp business in any country: United States, Canada, United Kingdom, France, Germany, Australia and the rest.
Top use cases
- Track every new review, including the ones Yelp filters, with Yelp Reputation Monitoring.
- Catch fresh 1 and 2 star reviews early with Yelp Negative Review Alerts.
- Export reviews for sentiment and topic analysis with Yelp Review Analysis.
- Find every review that mentions a word, a dish or a complaint with Yelp Review Keyword Search.
- See the not recommended and removed reviews Yelp hides with Yelp Hidden Reviews Audit.
- Build local lead lists with phone, website and hours with Yelp Business Leads.
- Map a category in a city, with ratings and price ranges, with Yelp Local Market Research.
- Track organic rank and ads for a keyword with Yelp Search Rank Tracking.
- Compare competitors' ratings, hours and amenities side by side with Yelp Competitor Comparison.
- Collect restaurant menus with every price option with Yelp Menu and Price Data.
- Download a business's full photo gallery, or the health inspection scores Yelp shows, with the photos and business modes.
Pick a mode
Set What to scrape (mode), then fill the section the mode needs: Business URLs for five modes, Search by keyword and location for search. The other sections are ignored.
| You want | mode | Paste into |
|---|---|---|
| Public reviews, with ratings, text and owner replies | reviews | businesses (Yelp business links) |
| The reviews Yelp hides: not recommended and removed | notRecommendedReviews | businesses |
| Phone, website, address, hours, star breakdown, amenities, health score | business | businesses |
| Businesses for a keyword in a city, with rank and ads | search | searchTerms + location |
| The whole photo gallery, full size | photos | businesses |
| Restaurant menus with prices, every tab | menu | businesses |
Every mode can be scheduled. Turn on Only new reviews and a daily run becomes a review monitor.
Input fields
| Option | Field | Used by | Default | What it does |
|---|---|---|---|---|
| What to scrape | mode | all | Reviews | Picks one of the six modes |
| Business URLs | businesses | all except search | none | Yelp business links from any country, the short name from the link, or Yelp's business ID |
| Search terms | searchTerms | search | none | One or more keywords, for example dentist |
| Location | location | search | none | A city, neighbourhood or postal code, for example San Francisco, CA |
| Add full business details | enrich | search | off | Adds phone, website, hours and the star breakdown to each result |
| Review order | sortBy | reviews | Most relevant | RELEVANCE_DESC, DATE_DESC, DATE_ASC, RATING_DESC or ELITES_DESC |
| Star ratings | ratings | reviews | all stars | Keep only these stars, as "1" to "5" |
| Review languages | languages | reviews | English | Pick one or more languages, or all for every language the business has |
| Only reviews containing this text | query | reviews | none | Keep reviews that mention a word; overrides order and stars |
| Only new reviews | delta | reviews | off | Return only reviews not delivered by an earlier run |
| Storage name for Only new reviews | deltaStoreName | reviews | yelp-delta | Keep it the same across scheduled runs; change it to start over |
| Maximum results per business | maxReviewsPerBusiness | reviews, hidden reviews, photos, menu | 0 (all) | Caps each business |
| Maximum results in total | maxItems | all | 0 (all) | Ceiling for the whole run; in search it is split evenly across your terms |
| Proxy | proxyConfiguration | all | Apify proxy | Leave as is; no setup needed |
Why this Yelp scraper?
- 🕵️ The hidden reviews: the not recommended and removed sets, to full depth, which most scrapers only mention.
- 📚 Every review: no depth cap, even on businesses with thousands of reviews. English by default, or any language Yelp has, or all of them.
- 🔔 Only new reviews: scheduled runs return just what appeared since last time, so you never pay twice.
- 📍 Search with real ranks: Yelp's organic position and which results are ads, plus the place Yelp actually searched.
- 🍽️ Whole menus: every tab (Lunch, Dinner, Drinks), with each price option, like glass and bottle.
- 💸 Pay only for results: rows that report a problem and repeats are never charged.
The reviews Yelp hides
Yelp does not show every review it has. A large share get pushed into a "not recommended" section that almost nobody clicks, and a second set gets removed outright for breaking Yelp's terms of service. Neither is counted in the star rating on the page.
The numbers are not small. One San Francisco restaurant shows roughly 12,900 public reviews. Underneath it sits another 4,400 or so marked not recommended, plus about 1,800 Yelp removed. If you are tracking a brand, that is a third of the conversation you cannot see.
This actor returns both sets, to full depth, with a reviewStatus field telling you which is which.
1. Reviews: every public review, in any language
Paste Yelp business links (or the short name from the link).
Get one row per review: star rating, text, date, photos, reactions, the reviewer's profile and Elite status, and the owner's reply.
| Option | Field | Default | What it does |
|---|---|---|---|
| Review order | sortBy | Most relevant | Newest, oldest, highest rated or Elite reviewers first |
| Star ratings | ratings | all | Keep only these stars, for example 1 and 2 |
| Review languages | languages | English | Pick one or more languages, or all for every language the business has |
| Only reviews containing this text | query | none | Keep reviews that mention a word, like "refund" or a dish |
| Only new reviews | delta | off | Returns only reviews not delivered by an earlier run with the same storage name |
| Maximum results per business | maxReviewsPerBusiness | 0 (all) | Caps each business |
Languages: Yelp shows one language at a time and defaults to English, so a business outside the US can show less than half its reviews. Pick the languages you want, or All languages for everything the business has. Each row's language field says which language it is in.
With a limit and several languages, newest, oldest and highest rated order give the true top results across them. Any other order shares the limit by language size, so a small limit still covers each language. Without a limit, reviews come language by language, largest first.
Input
{"mode": "reviews","businesses": ["https://www.yelp.com/biz/gary-danko-san-francisco"],"sortBy": "DATE_DESC","maxReviewsPerBusiness": 200}
Output (one real row, selected fields)
{"recordType": "review","businessName": "Gary Danko","businessUrl": "https://www.yelp.com/biz/gary-danko-san-francisco","reviewId": "WE6Z_U3FuNOAi0mLDIB0dw","reviewUrl": "https://www.yelp.com/biz/gary-danko-san-francisco?hrid=WE6Z_U3FuNOAi0mLDIB0dw","rating": 2,"text": "This score reflects overall value not necessarily the food quality or service. I was here last in 2014 and the service was impeccable. ...","language": "en","publishedAtLocal": "2026-10-27T07:52:30-07:00","ohNoCount": 1,"photoCount": 0,"ownerReplyText": null,"reviewerName": "Kurt L.","reviewerLocation": "San Francisco, CA","reviewerReviewCount": 135,"reviewerFriendCount": 42,"reviewerIsElite": false}
publishedAtLocal is the business's local time, never UTC.
2. Hidden reviews: not recommended and removed
Paste Yelp business links.
Hidden reviews always include every language. Yelp offers no language filter for them.
Get one row per hidden review, tagged with reviewStatus: notRecommended (filtered by Yelp, full text kept) or adminRemoved (taken down by Yelp, text stripped). The two kinds come interleaved, so even a small cap returns both.
| Option | Field | Default | What it does |
|---|---|---|---|
| Maximum results per business | maxReviewsPerBusiness | 0 (all) | Caps each business, both kinds together |
| Maximum results in total | maxItems | 0 (all) | Ceiling for the whole run |
Input
{"mode": "notRecommendedReviews","businesses": ["https://www.yelp.com/biz/zuni-cafe-san-francisco"],"maxReviewsPerBusiness": 200}
Output (one real row, selected fields)
{"recordType": "notRecommendedReview","businessName": "Zuni Café","businessUrl": "https://www.yelp.com/biz/zuni-caf%C3%A9-san-francisco-3","reviewId": "bBtNnGQA98QmayL0fCFPhw","reviewStatus": "notRecommended","isRecommended": false,"rating": 1,"text": "Doesn't Zuni Cafe have any connection whatsoever to the Zuni Tribe. Does the Zuni tribe know their name is being used for commercial purpose...","publishedAtLocal": "2026-10-20T20:02:22-07:00","reviewerName": "Louise A.","reviewerLocation": "San Carlos, AZ","reviewerReviewCount": 1}
3. Business details: contacts, hours and ratings
Paste Yelp business links.
Get one row per business: rating and the full star breakdown, price range, categories, phone, website, address, coordinates, hours per day, whether it is open now, amenities, health inspection score and popular items.
| Option | Field | Default | What it does |
|---|---|---|---|
| Business URLs | businesses | none | One row per business; the same business given twice is returned and charged once |
| Maximum results in total | maxItems | 0 (all) | Returns the first N businesses of your list |
Input
{"mode": "business","businesses": ["https://www.yelp.com/biz/gary-danko-san-francisco"]}
Output (one real row, selected fields)
{"recordType": "business","businessName": "Gary Danko","businessUrl": "https://www.yelp.com/biz/gary-danko-san-francisco","rating": 4.5,"reviewCount": 6153,"ratingCount1": 124,"ratingCount5": 4234,"priceRange": "$$$$","categories": "New American, French, Cocktail Bars","phone": "(406) 626-8866","website": "http://garydanko.com","addressLine1": "800 N Point St","city": "San Francisco","postalCode": "94109","latitude": 37.8058724,"longitude": -122.4205943,"hoursMonday": "5:00 PM - 10:00 PM","isClosedPermanently": false,"healthScore": "Pass","healthScoreDate": "2026-06-04T07:00:00.000Z","popularItems": "Roast Maine Lobster | Lemon Pepper Duck Breast | Seared Filet of Beef | Chocolate Souffle | ..."}
phone is the number Yelp shows on the business page.
4. Search: businesses by keyword and city
Paste one or more search terms and a location (a city, neighbourhood or ZIP code).
Get one row per business: name, rating, review count, price, categories, address, Yelp's organic rank and whether the listing is an ad. Turn on Add full business details (enrich) to merge in phone, website and hours.
| Option | Field | Default | What it does |
|---|---|---|---|
| Search terms | searchTerms | none | One or more keywords |
| Location | location | none | City, neighbourhood or postal code |
| Add full business details | enrich | off | Adds phone, website, hours and the star breakdown to each row |
| Maximum results in total | maxItems | 0 (all) | Split evenly across your terms |
Input
{"mode": "search","searchTerms": ["plumbers"],"location": "San Francisco, CA","maxItems": 25}
Output (one real row, selected fields)
{"recordType": "searchResult","businessName": "Ace Plumbing & Rooter","businessUrl": "https://www.yelp.com/biz/ace-plumbing-and-rooter-san-francisco-13","searchTerm": "plumbers","searchLocation": "San Francisco, CA","resolvedLocation": "San Francisco, CA","searchRank": 1,"searchSlot": 6,"isAd": false,"rating": 4.7,"reviewCount": 1499,"categories": "Plumbing, Water Heater Installation/Repair, Hydro-jetting","city": "San Francisco","neighborhood": "SoMa"}
searchRank is Yelp's organic position (null on ads); searchSlot is the position on the page counting ads. resolvedLocation is the place Yelp actually searched: type "Springfield" and this tells you whether you got Missouri or Illinois.
5. Photos: the whole gallery
Paste Yelp business links.
Get one row per photo: full size image link, thumbnail, caption, uploader, upload date, and whether it came with a review.
| Option | Field | Default | What it does |
|---|---|---|---|
| Maximum results per business | maxReviewsPerBusiness | 0 (all) | Caps photos per business, in Yelp's gallery order |
| Maximum results in total | maxItems | 0 (all) | Ceiling for the whole run |
Input
{"mode": "photos","businesses": ["https://www.yelp.com/biz/ruby-king-bakery-oakland-3"],"maxReviewsPerBusiness": 300}
Output (one real row, selected fields)
{"recordType": "photo","businessName": "Ruby King Bakery","photoId": "4GSJ-eZYY4ayuUwILx3WBA","photoUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/4GSJ-eZYY4ayuUwILx3WBA/o.jpg","thumbnailUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/4GSJ-eZYY4ayuUwILx3WBA/348s.jpg","caption": "August 2024","width": 4032,"height": 3024,"uploadedBy": "Roderick T.","uploadedAt": "2026-07-01T22:26:09Z","isFromReview": false,"format": "JPEG"}
width and height are the size of the original upload; the full size link Yelp serves is at most 1,000 pixels on its long side.
6. Menu: every tab, every price
Paste Yelp business links.
Get one row per menu item: tab, section, name, price, every price option, currency, description, and the item's review and photo counts.
| Option | Field | Default | What it does |
|---|---|---|---|
| Maximum results per business | maxReviewsPerBusiness | 0 (all) | Caps menu items per business |
| Maximum results in total | maxItems | 0 (all) | Ceiling for the whole run |
Input
{"mode": "menu","businesses": ["https://www.yelp.com/biz/the-cheesecake-factory-san-francisco-12"]}
Output (one real row, selected fields)
{"recordType": "menuItem","businessName": "The Cheesecake Factory","menuName": "From the Bar","menuSection": "Prosecco","itemName": "Ruffino, Italy","itemPrice": "14.50","itemPriceVariants": "Glass: $14.50 | Bottle: $51.00","itemCurrency": "USD","itemUrl": "https://www.yelp.com/menu/the-cheesecake-factory-san-francisco-12/item/ruffino-italy"}
itemPrice is the first price; itemPriceVariants lists them all when an item has more than one. menuName is the menu tab, null when the menu has no tabs.
Use it from an AI agent (Claude, ChatGPT, MCP)
Connect Claude, ChatGPT, Cursor or any MCP client to Apify's MCP server with this scraper as a tool:
https://mcp.apify.com?tools=sourabhbgp/yelp-scraper
Then ask in plain words. The agent fills in the input, and you pay the same per result. For example:
- "Get the 100 newest 1 and 2 star Yelp reviews for Brenda's French Soul Food in San Francisco."
- "Show me the reviews Yelp hid for Zuni Café."
- "Find 30 dentists in Austin, TX on Yelp with their phone numbers and websites."
- "What are the prices on The Cheesecake Factory's Yelp menu?"
Notes for the agent:
| Question | Mode | Minimum input |
|---|---|---|
| What do customers say about a business? | reviews | businesses (+ sortBy, ratings, query) |
| Which reviews did Yelp hide or remove? | notRecommendedReviews | businesses |
| Phone, website, hours, rating of a business | business | businesses |
| Which businesses match a keyword in a place? | search | searchTerms + location (+ enrich for contacts) |
| Photos of a business | photos | businesses |
| Menu items and prices | menu | businesses |
- Keep the cost small: set
maxReviewsPerBusiness(reviews, hidden reviews, photos, menu) ormaxItems(any mode, the only limit search uses) to what the question needs, for example 50.maxItemsis shared across all businesses, so the first ones can use it up. To cover every business, setmaxReviewsPerBusinessas well. - Business input: a Yelp business link from any country (
https://www.yelp.com/biz/<name>), the short name from that link, or Yelp's 22 character business ID. A name typed in words is not accepted here: usesearchto find the business first. - Ratings filter:
ratingstakes strings"1"to"5"; empty means all stars. AqueryoverridessortByandratings. - Key output fields:
reviewStatusseparatesnotRecommendedfromadminRemoved; removed reviews have no text.searchRankis null on ads.publishedAtLocalis the business's local time. - Reading the result: the status message starts with a code when something did not go as asked:
[U_...]means the input (U_NOT_FOUND,U_NO_RESULTS,U_CHARGE_CAP,U_TIMEOUT),[E_...]means our side, and a run that ends short starts withPartial:. TheRUN_SUMMARYrecord in the run's key-value store lists every input with its own outcome. - Time: a few hundred reviews take under a minute; a full photo gallery of 15,000 images takes about 20 minutes; search with full details takes about 7 seconds per business.
How much does it cost?
You pay per result, and each result is charged once. Rows that report a problem and the same business supplied twice are never charged.
Until 12 November 2026: $3.00 per 1,000 results of any kind, plus $0.005 per run.
From 12 November 2026, each kind of result has its own price, lower on higher Apify plans:
| What you get | Free plan | Starter | Scale | Business |
|---|---|---|---|---|
| Review | $1.00 | $0.50 | $0.45 | $0.40 |
| Photo | $1.00 | $0.50 | $0.45 | $0.40 |
| Menu item | $1.50 | $0.75 | $0.65 | $0.60 |
| Search result | $2.00 | $1.00 | $0.90 | $0.80 |
| Hidden review | $2.00 | $1.00 | $0.90 | $0.80 |
| Business details (also search with full details) | $3.00 | $1.50 | $1.35 | $1.20 |
Prices are per 1,000. Each run also costs $0.005 to start.
- Free plan: your $5 monthly credit covers about 5,000 reviews, or 1,660 business details.
- Starter plan ($29): about 58,000 reviews a month, or 19,300 business details.
Limitations
- Removed reviews have no text: Yelp strips the body, and often the reviewer's name, when it removes a review. You get the rating, the date and the reviewer's profile.
- Hidden reviews come lowest rated first: that is Yelp's own order within each kind, and it cannot be changed.
- Search returns about 200 businesses per query: Yelp caps a search at 240 result slots and repeats some listings inside them. The run says when it reached that limit; more specific searches reach further.
- Sorting by Elite reviewers fails on very large businesses: Yelp's own website breaks on that sort above a few thousand reviews. Any other sort works at any size.
- Searching reviews for a word overrides the sort and star filters: Yelp returns text matches in its own relevance order.
- Menus exist only where the business published one on Yelp: a business with no Yelp menu, or a menu linked off Yelp, gets a free row saying so.
FAQ
How do I scrape Yelp without coding?
Pick a mode, paste Yelp business links (or a keyword and a city for search), and press Start. Download the results as Excel, CSV or JSON.
Can I get only new reviews since my last run?
Yes. Turn on Only new reviews and keep the same storage name across scheduled runs. The first run collects everything up to your limit; later runs return only reviews posted since. Older reviews beyond that limit are not collected later, so to get a business's full history, run the first time without a limit.
Can I get reviews in other languages?
Yes. Reviews are in English by default. To get others, pick them in Review languages, or choose All languages for every language the business has, including Spanish, German, French, Chinese, Japanese and more.
How many reviews can I get from one business?
All of them. There is no depth cap and no page limit, even on businesses with thousands of reviews.
What is the difference between "not recommended" and "removed" reviews?
Not recommended reviews were filtered by Yelp's software but are still on the site, with their full text. Removed reviews were taken down for breaking Yelp's terms, and Yelp deletes the text. Both arrive in the same mode, labelled by reviewStatus.
Do I need a proxy or a Yelp account?
No. It works out of the box and never logs in.
What happens if I paste a bad link?
You get a free row explaining the problem, and the run finishes normally.
Can I use it from code or an AI agent?
Yes. Call it through the Apify API, or connect it to an AI agent through Apify's MCP server (see above).
Is scraping Yelp legal?
It collects only what Yelp shows any visitor, with no login. How you use the data is your responsibility: review text and reviewer names are personal data in many places, so store or publish them only with a lawful basis under GDPR, CCPA or your local equivalent.
Your feedback
Something missing or wrong? Open an issue.