Yelp Business Listings Extractor
Pricing
from $1.99 / 1,000 results
Yelp Business Listings Extractor
Yelp business scraper that pulls listings from any keyword and location search, so you get names, ratings, reviews, price, phone, and photos ready for SEO and lead lists.
Pricing
from $1.99 / 1,000 results
Rating
0.0
(0)
Developer
Kawsar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
Pull business listings straight from Yelp search results, in bulk. Give it a keyword and a city, or paste your own Yelp search links, and it collects every business on the page: name, star rating, review count, price, categories, neighborhood, phone, and photos. It pages through the results on its own up to the limit you set.
Handy for local SEO research, lead lists, competitor tracking, and market sizing. Export the data to JSON, CSV, or Excel and drop it straight into your workflow.
Why use this actor
Yelp is one of the largest directories of local businesses, but the site gives you no easy way to get that data out. Copying listings by hand is slow, and the page loads more results only as you scroll. This actor does the scrolling and paging for you and hands back clean, structured rows you can sort, filter, and import anywhere.
- No login, no cookies, no browser extensions to install
- Works from a plain keyword and location, or from search URLs you already have
- Reads both paid and organic listings on each page
- Skips duplicates when a business shows up on more than one page
- Runs on Apify, so you can schedule it, call it from the API, or chain it into a bigger pipeline
What it does
- Searches Yelp by keyword and location, or by full search URL
- Reads every listing on each result page, ads and organic
- Follows pagination automatically until it reaches your item limit
- Pulls price, rating, and review count from the page even when they are not in the raw data
- Returns clean, structured records ready for a spreadsheet or a database
- De-duplicates businesses across pages by their Yelp ID
Use cases
- Lead generation: build local prospect lists with names, phone numbers, categories, and ratings
- Local SEO: see who ranks for a keyword in a city and track movement over time
- Competitor research: compare ratings, review volume, and price level across a neighborhood
- Market research: measure how many businesses match a category in a given area, and at what price points
- Data enrichment: match Yelp ratings and review counts onto an existing list of businesses
Input
Give the actor a keyword plus a location, or one or more full Yelp search URLs. Everything else is optional.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
searchTerms | list of strings | Yes, if no searchUrls | ["Restaurants"] | Keywords to search, for example Restaurants, Plumbers, Coffee. Each keyword is combined with the location. |
location | string | Yes, with searchTerms | San Francisco, CA | City, area, or ZIP to search in. |
searchUrls | list of strings | Yes, if no searchTerms | empty | Full Yelp search URLs. Use these instead of keyword plus location when you already have exact links, for example ones with filters applied. |
maxItems | integer | No | 15 | Max listings to collect per run across all searches, up to 1000. |
requestTimeoutSecs | integer | No | 30 | Per-request timeout in seconds. |
You can mix searchTerms plus location with searchUrls in the same run. The actor merges them and removes duplicate searches.
Example input: keyword and location
{"searchTerms": ["Restaurants", "Coffee"],"location": "San Francisco, CA","maxItems": 50}
Example input: your own search URLs
{"searchUrls": ["https://www.yelp.com/search?find_desc=Bakeries&find_loc=Austin,+TX"],"maxItems": 100}
Output
Each business becomes one record in the dataset. Fields that Yelp does not show for a given business come back as null or an empty list rather than a guessed value.
| Field | Type | Description |
|---|---|---|
name | string | Business name |
alias | string | Yelp URL slug for the business |
bizId | string | Yelp's internal business ID, stable across searches |
yelpUrl | string | Link to the business page |
rating | number | Star rating, 0 to 5 |
reviewCount | integer | Number of reviews |
priceRange | string | Price level, $ to $$$$, or null when not shown |
phone | string | Phone number when Yelp shows one |
categories | list | Category labels, for example Steakhouses, Seafood |
neighborhoods | list | Neighborhood names |
formattedAddress | string | Address when available |
serviceArea | string | Service area for businesses that list one |
isAd | boolean | Whether the listing is a paid placement |
imageUrl | string | First listing photo |
imageUrls | list | All listing photos on the card |
reviewSnippet | string | A short review excerpt shown on the card |
businessHighlights | list | Yelp highlights, for example Outdoor seating |
rankingPosition | integer | Position in the collected results |
searchTerm | string | The keyword that produced this listing |
searchLocation | string | The location that produced this listing |
searchUrl | string | The search URL used |
scrapedAt | string | UTC timestamp of the run, ISO 8601 |
Example output
{"name": "Fog Harbor Fish House","alias": "fog-harbor-fish-house-san-francisco-2","bizId": "abcd1234","yelpUrl": "https://www.yelp.com/biz/fog-harbor-fish-house-san-francisco-2","rating": 4.4,"reviewCount": 13300,"priceRange": "$$","phone": null,"categories": ["Seafood", "Bars"],"neighborhoods": ["Fisherman's Wharf"],"formattedAddress": null,"serviceArea": null,"isAd": false,"imageUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/xxxx/ls.jpg","imageUrls": ["https://s3-media0.fl.yelpcdn.com/bphoto/xxxx/ls.jpg"],"reviewSnippet": "Daniela was absolutely amazing...","businessHighlights": ["Family-owned & operated", "Full bar"],"rankingPosition": 2,"searchTerm": "Restaurants","searchLocation": "San Francisco, CA","searchUrl": "https://www.yelp.com/search?find_desc=Restaurants&find_loc=San+Francisco,+CA","scrapedAt": "2026-08-13T12:00:00+00:00"}
How to run it
- Open the actor on Apify.
- Enter your search terms and a location, or paste one or more Yelp search URLs.
- Set
maxItemsto how many listings you want. - Click Start, or schedule the run.
- When the run finishes, open the dataset and export to JSON, CSV, Excel, or HTML, or pull the results through the Apify API.
You can also start runs from the Apify API or the Apify client libraries for Python and JavaScript, which makes it easy to fold the actor into an existing workflow.
How pagination works
Yelp shows 10 results per page and loads the next set with a start value in the URL. The actor walks through pages on its own, page by page, and stops when it reaches your maxItems limit or runs out of results. You do not need to build page URLs by hand. Set maxItems to the total you want across the whole search.
Tips and best practices
- One keyword plus one location gives you a focused list. Add more keywords to widen the run.
- Keep
maxItemsclose to what you actually need. Smaller runs finish faster and cost less. - Pasting a search URL lets you carry over filters you set in the browser, such as price level or open now.
- Business IDs (
bizId) are stable, so you can re-run a search later and match records to spot new or dropped listings. - Run one search per city rather than trying to cover several cities in a single query.
FAQ
How many results can I get per search?
As many as Yelp returns for that query, up to the maxItems you set. The actor stops when it reaches the limit or runs out of pages.
Can I scrape several cities at once?
Yes. Add one search URL per city to searchUrls, or run the actor once per location.
Do I always get a phone number? Yelp lists a phone number for many businesses, and it comes through when present. Some organic cards do not expose a phone on the search page.
Why is priceRange sometimes null?
Because Yelp does not show a price for every business. When the page displays a price, the actor returns it. When it does not, the field is null rather than a made-up value.
What is the difference between ads and organic results?
Paid placements have isAd set to true. Both kinds are collected so you see the full page as a searcher would.
What export formats are supported? JSON, CSV, Excel, and HTML from the dataset, plus the Apify API for programmatic access.
Notes
Please use the data responsibly and in line with Yelp's terms and any laws that apply to you. This actor is intended for research, analytics, and lead generation on publicly visible listings.