Yelp Business Profiles Scraper
Pricing
Pay per event
Yelp Business Profiles Scraper
Search Yelp by keyword or category and location, or extract exact business URLs. Export public identity, ratings, contacts, address, hours, categories, prices, and canonical profile URLs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Search Yelp by keyword or category and location, or supply business profile URLs directly. The Actor returns normalized public business identity, categories, rating summary, address, phone and website when visible, opening hours, price indicator, and canonical Yelp URL.
Use this Yelp scraper for repeatable local-business prospecting and market research without manually copying profile pages into a spreadsheet.
What does Yelp Business Profiles Scraper do?
The Actor supports two complementary routes:
- Search Yelp with one or more keyword/category and location pairs.
- Extract exact businesses from canonical
yelp.com/biz/...URLs.
Each accepted business becomes one typed record in the default Apify dataset. Search results are deduplicated by Yelp alias, including across multiple searches. Sponsored results are excluded by default and can be included explicitly.
The Actor does not scrape reviews. If your job is review and reputation analysis, use the related Yelp Business Reviews Scraper listed below.
Who is it for?
Local sales teams build focused prospect lists by trade, service, or neighborhood.
Market researchers compare category density, ratings, review volume, and price signals.
Agencies map public business profiles before campaign planning or territory reviews.
Data teams schedule recurring extraction into a warehouse, spreadsheet, CRM, or BI tool.
Developers call a stable Actor input/output contract instead of maintaining page parsers.
Why use this Actor?
- Searches and direct business URLs work in the same run.
- Output is normalized into stable business-profile fields.
- Full public profile pages enrich search results with contacts and weekly hours when visible.
maxItemsis enforced across all inputs, so run size is predictable.- Duplicate aliases are saved only once.
- Invalid URLs and malformed searches fail with clear errors.
- Missing public fields are returned as
nullor empty arrays, not invented values. - The implementation uses lightweight HTTP rather than a full browser or paid proxy route.
What Yelp business data is extracted?
| Field | Meaning |
|---|---|
businessId | Stable Yelp business identifier when exposed |
alias | Alias in the Yelp profile URL |
name | Public business name |
categories | Yelp category labels |
rating | Current rating summary shown by Yelp |
reviewCount | Current public review count |
priceRange | Yelp price indicator such as $$, when visible |
address | Street, city/region/postal display, and combined address |
phone | Public telephone number, when visible |
website | Business website linked by Yelp, when visible |
hours | Weekday opening intervals and current status when shown |
canonicalUrl | Canonical Yelp business profile URL |
photoUrl | Representative public Yelp photo URL, when visible |
isClosed | Closed-business signal when Yelp exposes it |
sourceSearch | Search term and location that discovered the record |
scrapedAt | ISO 8601 extraction timestamp |
Yelp does not expose every field for every listing. Consumers should treat contact, website, price, hours, photo, and closure fields as nullable.
How to get started
- Open the Actor input page.
- Keep the prefilled San Francisco coffee-shop search or replace it.
- Add more
{ "term", "location" }pairs if needed. - Optionally add exact Yelp business URLs under Yelp business URLs.
- Set Maximum business profiles to the output size you need.
- Leave sponsored results disabled for organic research, or enable them intentionally.
- Click Start.
- Open the Business profiles dataset view.
- Export JSON, CSV, Excel, XML, or RSS from Apify Dataset storage.
A small first run is recommended so you can confirm the category, location, and output fields before scheduling a larger recurring job.
Input parameters
searches
An array of objects with:
term: a business keyword or category, for examplecoffee shopsorplumbers.location: a city, neighborhood, postal code, or region, for exampleAustin, TX.
Both values must be non-empty. A term can contain up to 120 characters and a location up to 160 characters.
startUrls
Optional canonical Yelp business URLs matching /biz/<alias>.
URLs from non-Yelp hosts and non-business Yelp routes are rejected.
maxItems
Maximum unique business records saved across every search and direct URL. Allowed range: 1–100. Default: 20.
includeAds
When false (default), sponsored search sections are excluded.
When true, sponsored businesses may be included and deduplicated with organic results.
At least one search or direct business URL is required.
Input examples
Search one local category:
{"searches": [{ "term": "coffee shops", "location": "San Francisco, CA" }],"maxItems": 5,"includeAds": false}
Extract one exact business profile:
{"searches": [],"startUrls": [{ "url": "https://www.yelp.com/biz/gary-danko-san-francisco" }],"maxItems": 1}
Build a multi-market list:
{"searches": [{ "term": "plumbers", "location": "Austin, TX" },{ "term": "plumbers", "location": "San Antonio, TX" }],"maxItems": 40,"includeAds": false}
Output example
A current direct-profile run produced this shape (photo URL shortened for readability):
{"businessId": "WavvLdfdP6g8aZTtbBQHTw","alias": "gary-danko-san-francisco","name": "Gary Danko","categories": ["Restaurants", "New American"],"rating": 4.5,"reviewCount": 6139,"priceRange": null,"address": {"street": "800 N Point St","cityStatePostal": "San Francisco, CA 94109","formatted": "800 N Point St, San Francisco, CA 94109"},"phone": "(415) 749-2060","website": "http://www.garydanko.com","hours": [{ "day": "Mon", "intervals": ["5:00 PM - 10:00 PM"], "status": "Closed now" }],"canonicalUrl": "https://www.yelp.com/biz/gary-danko-san-francisco","photoUrl": "https://s3-media0.fl.yelpcdn.com/bphoto/...","isClosed": false,"sourceSearch": null,"scrapedAt": "2026-08-18T07:55:00.000Z"}
Search-discovered records populate sourceSearch; direct-URL records use null.
How much does it cost to extract Yelp business profiles?
The Actor uses pay-per-event pricing:
- one
startevent per run; - one
itemevent per business profile saved.
The start event is $0.001. The per-item event has six volume tiers, so its unit price decreases on higher Apify plans. The BRONZE item rate is $0.0026 per saved business profile; the exact rate for your plan is shown on the Actor pricing tab.
As a planning formula:
estimated charge = $0.001 + (saved business profiles × your plan's item rate)
BRONZE examples:
| Saved profiles | Estimated charge |
|---|---|
| 1 | USD 0.0036 |
| 10 | USD 0.0270 |
| 100 | USD 0.2610 |
On the FREE tier, the item rate is $0.00299, so the same 10-profile run is USD 0.0309. You are not charged an item event for a duplicate, rejected, failed, or empty profile.
Local prospecting and market-research workflows
Build a category prospect list
Search a category and city, export CSV, then filter by rating, review volume, or public contact availability before importing selected records to your CRM.
Compare local markets
Run the same term across several locations. Group records by sourceSearch.location and compare
business count, category mix, ratings, and review volume.
Monitor public profile changes
Schedule a Task with exact startUrls. Store each run in your warehouse and compare rating,
review count, phone, website, address, and hours over time.
The Actor returns snapshots; it does not calculate changes or send alerts itself.
Enrich an existing Yelp URL list
Send canonical Yelp URLs from a spreadsheet or database, then join the returned records on
canonicalUrl or businessId.
Export and integration options
Apify datasets can be downloaded as JSON, JSONL, CSV, Excel, XML, or RSS. Common destinations include:
- Google Sheets through Make or Zapier;
- Airtable and CRM lead tables;
- BigQuery, Snowflake, PostgreSQL, or object storage;
- internal territory dashboards;
- scheduled webhooks and downstream Actors;
- Python, JavaScript, or command-line data pipelines.
Use businessId where available for durable joins. Use canonicalUrl as the portable fallback.
Run through the Apify API
Replace <APIFY_TOKEN> with your token.
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~yelp-business-profiles-scraper/runs?token=<APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"searches":[{"term":"plumbers","location":"Austin, TX"}],"maxItems":10}'
To wait for completion and receive dataset items:
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~yelp-business-profiles-scraper/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"searches":[{"term":"coffee shops","location":"San Francisco, CA"}],"maxItems":5}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/yelp-business-profiles-scraper').call({searches: [{ term: 'plumbers', location: 'Austin, TX' }],maxItems: 10,includeAds: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("automation-lab/yelp-business-profiles-scraper").call(run_input={"searches": [{"term": "plumbers", "location": "Austin, TX"}],"maxItems": 10,"includeAds": False,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
Use with Apify MCP
Add this Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/yelp-business-profiles-scraper"
Claude Desktop, Cursor, and VS Code
Use this same MCP configuration in Claude Desktop, Cursor, or VS Code:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/yelp-business-profiles-scraper"}}}
Example prompts:
- "Find five Yelp coffee shop profiles in San Francisco and return names, ratings, and URLs."
- "Extract the address, phone, website, and hours for these Yelp business URLs."
- "Build a ten-business plumber prospect list for Austin and format it as a table."
Limits and expected behavior
- The Actor extracts public Yelp business profile data, not Yelp account or login data.
- It does not return reviews, reviewer data, emails, or private owner information.
- Yelp may omit phone, website, price, address details, photos, or opening hours.
- If profile-detail enrichment is rate-limited during a search run, the Actor preserves useful search-profile identity, category, rating, review-count, address, and URL records; contact, website, hours, and photo fields can remain empty for the affected records.
- Search ranking and profile values can change between runs.
maxItemsis capped at 100 per run.- The default timeout is 15 minutes; large runs may need a smaller scope if upstream responses are unusually slow.
- Results are deduplicated by business alias, not by company ownership or physical address.
- Search results reflect the location interpretation returned by Yelp.
- Sponsored businesses are included only when
includeAdsis enabled. - An unrecognized upstream page shape fails the run rather than returning misleading empty data.
Legality and responsible use
Only collect and use data you are authorized to process. Review Yelp's terms, applicable robots guidance, privacy requirements, and local laws for your intended use.
Public business contact details are not blanket permission for unsolicited outreach. Apply appropriate consent, suppression, retention, and opt-out practices. Do not use this Actor for harassment, discrimination, surveillance, or attempts to access private Yelp or business-owner accounts.
This Actor is an independent automation tool and is not affiliated with or endorsed by Yelp.
Troubleshooting
The run says an input is required
Provide at least one valid searches entry or one canonical Yelp /biz/ URL.
An empty object is intentionally rejected.
A start URL is rejected
Use a public Yelp business profile URL such as https://www.yelp.com/biz/<alias>.
Search pages, review anchors without a /biz/ path, and other hosts are not direct-profile inputs.
A field is null or an array is empty
Check the public profile. Yelp does not show every contact, price, category, or hours field on every business. The Actor does not infer missing values.
I received fewer records than expected
The source may have fewer matching organic profiles, and duplicates across searches are saved once. Enable sponsored results only if those records fit your workflow.
The run failed on an upstream page
Retry once after checking Apify's status page and the run log. Persistent recognized-payload errors indicate that the public source changed and should be reported with the run ID and input. Do not add a proxy unless requested by a future Actor version; the current route does not use one.
Frequently asked questions
Does the Actor require a Yelp API key or login?
No. It extracts fields visible on public Yelp search and business profile surfaces.
Can it search by category and location?
Yes. Put the category in term and the city, neighborhood, postal code, or region in location.
Can I supply exact business URLs?
Yes. Use startUrls, alone or together with searches.
Does it scrape reviews?
No. This Actor returns profile and rating-summary records. Use Yelp Business Reviews Scraper for individual reviews and owner responses.
Can I schedule recurring monitoring?
Yes. Create an Apify Task from your input and schedule it. Persist consecutive datasets in your own destination to calculate changes.
Are all contact fields guaranteed?
No. Contact, website, address, price, hours, photo, and closure signals depend on what Yelp shows publicly for each business.
Related Automation Lab Actors
- Yelp Business Reviews Scraper extracts individual public reviews, ratings, reviewer metadata, dates, photos, and owner responses from supplied Yelp business URLs.
Use Business Profiles Scraper for discovery and normalized business records. Use Business Reviews Scraper when the buyer job is reputation and review analysis.