Yelp Business Scraper & Monitor (ratings, hours, change alerts)
Pricing
from $2.00 / 1,000 result items
Yelp Business Scraper & Monitor (ratings, hours, change alerts)
Yelp business scraper: search by term and location or paste business URLs and get flat rows with rating, review count, price range, categories, address, phone, hours, claimed and closed flags. Monitor mode alerts when a rating, review count or open status changes. No login, no Yelp API key.
Pricing
from $2.00 / 1,000 result items
Rating
0.0
(0)
Developer
Viktor Dubnytskiy
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape Yelp businesses by search term and location, or by pasting business page URLs, and get one flat row per business with its rating, review count, categories, address and hours. Run the same input in monitor mode on a schedule and you get only the businesses whose rating, review count or open status has moved since the last run.
What you get (example output)
One row per business. Real values from the example dataset of this actor:
| Field | Example value |
|---|---|
name | Uncle Benny's Donut and Bagel |
rating / reviewCount | 4.5 / 588 |
priceRange | $$ |
categories | ["Donuts", "Bagels", "Coffee & Tea"] |
address / city / region / postalCode | 2049 Irving St / San Francisco / CA / 94122 |
phone | (415) 731-1323 |
isClaimed / isClosed / isAdvertiser | true / false / true |
neighborhoods / timezone | ["Outer Sunset"] / America/Los_Angeles |
url | https://www.yelp.com/biz/uncle-bennys-donut-and-bagel-san-francisco |
Also on every row: bizId, alias, country, hoursByDay (Yelp's raw week-minute ranges), searchTerm, searchLocation, rank, source (search or business), scrapedAt.
Use cases
- Reputation monitoring for multi-location brands: track rating and review count per location and get a webhook the day one of them drops.
- Local lead lists: pull the businesses ranked for a term in a city, with categories, address, phone and whether the listing is claimed.
- Competitive and market research: compare rating, price range and advertiser status across a category in one neighbourhood.
How it works
- Each
searchesentry becomes a Yelp search URL; 10 businesses are returned per page, up tosearchPages. businessUrlsare opened directly as business pages, which carry the richer fields (phone, hours, claimed flag, neighbourhoods);fetchDetailsdoes the same for every search hit.- Requests go through Apify Web Unblocker, which passes Yelp's DataDome protection; no login and no Yelp API key is involved.
- Rows are deduplicated on the Yelp business id, so overlapping searches are not charged twice.
- In
monitormode the run compares against the previous run of the same task and returns only businesses whose tracked fields changed, withchangedFieldsandprevious, optionally posting a summary to a webhook or Telegram chat.
Input
| Field | Meaning | Default |
|---|---|---|
searches | [{"term": "coffee", "location": "San Francisco, CA"}] | that example |
businessUrls | yelp.com/biz/<alias> URLs or bare aliases | empty |
searchPages | Search result pages per search (10 businesses per page) | 1 |
fetchDetails | Open each search hit's business page for phone, hours, claimed flag | false |
maxItems | Stop after this many businesses | 20 |
mode | scrape or monitor (only rating / review-count / status changes) | scrape |
monitorKey | State key for monitor mode outside a saved task | empty |
webhookUrl | HTTPS endpoint for the monitor-mode change summary | empty |
telegramBotToken / telegramChatId | Send the monitor-mode summary to Telegram | empty |
Pricing
| Event | Price |
|---|---|
| result | $0.002 per business ($2 per 1,000) |
| monitor-check | $0.006 per monitor run |
| change | $0.002 per changed business |
Charged only for businesses actually pushed. Blocked pages are not charged; three in a row end the run with reason blocked.
Why this actor
- Monitor mode is the point: it returns only what changed (
changedFields,previous) instead of a fresh full dump you have to diff yourself. - Passes Yelp's DataDome protection through Apify Web Unblocker — no login, no cookies, no Yelp API key.
- Search hits and business pages come back in the same schema, so lists and detail lookups merge cleanly.
- You pay per pushed row; blocked or empty runs cost nothing beyond platform usage, and
RUN_SUMMARYrecords the reason (no_matches,blocked,rate_limited,invalid_input,upstream_error). - Honest about what Yelp does not expose — see Limits, which are stated rather than hidden.
Limits
- Review texts are not included. Yelp renders reviews client-side through a private GraphQL endpoint that its bot protection blocks; this actor tracks
reviewCountandratinginstead and alerts on changes, which is what most monitoring needs. - Yelp uses DataDome; the actor runs through Apify Web Unblocker, billed by Apify per request on top of results. A search page yields 10 businesses per request.
phone,isClaimed,postalCodeandhoursByDaycome from business pages — usebusinessUrls, orfetchDetailsfor search hits; on plain search rows they arenull.hoursByDayis Yelp's raw structure: minute offsets from the start of the week, not formatted opening times.- No person-level data: reviewer names and profiles are not collected.
FAQ
Can I scrape Yelp without the Yelp Fusion API key? Yes. This actor reads public Yelp pages through Apify Web Unblocker; you provide no Yelp credentials and are not bound by the API's daily call quota.
Does it return Yelp review text? No. Yelp serves review bodies from a protected client-side endpoint. What you get is the rating and review count per business, and, in monitor mode, an alert when either moves.
How do I get alerted when my competitor's rating drops?
Save the actor as a task with those businesses in businessUrls, set mode: monitor, schedule it daily and add webhookUrl or the Telegram fields. Each run returns only businesses whose rating, review count or open status changed.
Changelog
- 0.1: initial release — search and business pages, monitor mode.
If this actor is useful, please leave a review on its Apify Store page — that is how other people find it. For bugs or a field you need, open a ticket on the Issues tab of this actor.