Piotr VassevPiotr Vassev

How to Build a Local Business List from Yelp

The Yelp Business Scraper collects business listings for a category or keyword and location, including available phone, address, coordinates, and opening hours. I maintain the Actor. This guide builds a list of plumbers around Austin for local-business research.

A plumber may serve an area without a public storefront. The export can help find candidates, but the address fields need to be read in that context.

How to Scrape Yelp Business Listings

Start with one service and one place

Use search for the business category or keyword and location for a city, neighborhood, or address. maxItems is the total business cap and defaults to 50. Zero removes the Actor cap but does not guarantee every business in the area is accessible through Yelp search.

The example requests Plumber in Austin, TX. More specific neighborhoods can be useful later, but overlapping searches require deduplication. This Actor does not currently return each business's own website.

Phone and other contact fields share the business-result price rather than a separate contact-enrichment event. Field availability still depends on the source; a missing field should remain unknown.

Budget for the sample

Pricing as of September 6, 2026. The active price is $0.0025 per business listing. Fifty returned businesses would cost $0.125. Contact fields are included in the same event. Check current Actor pricing and the run charge breakdown; these calculations describe Actor events, and separately billed platform or proxy resources may also apply.

Collect fifty Austin businesses

Open the Actor on Apify. In Input, switch to the JSON editor and paste:

{
  "search": "Plumber",
  "location": "Austin, TX",
  "maxItems": 50
}

Click Start, then open the completed run’s output dataset.

After completion, inspect categories and location fields before treating the rows as a qualified business list. A search match may be in a neighboring area or offer only part of the service you need.

Check sponsored alongside rank. Paid placements are marked sponsored and carry a null organic rank in the documented output. Do not turn their dataset order into an organic search position.

Read the returned fields

FieldHow to use it
nameBusiness name
ratingDisplayed star rating
reviewCountReview count
phonePublished phone
addressFull address fields
openingHoursWeekly hours when available

The historical plumbing sample has street: null and an address consisting of city, state, and postal code. That is consistent with a service-area business, not necessarily a broken address extraction. Coordinates should not automatically be presented as a customer-accessible shop entrance.

priceRange can be null for trades that do not have a Yelp price level. It is not an hourly quote. reviewCount and rating describe the displayed review summary, not a guarantee of service quality.

Historical yelp business scraper output

Prepare a clean local-business review sheet

Export CSV with encBizId, name, Yelp URL, categories, phone, address components, rating, review count, and scrapedAt. Retain JSON for arrays such as categories and weekly opening hours.

Deduplicate by encBizId across searches. Preserve multiple locations of the same brand if they have distinct business IDs and addresses. Normalize phone formatting into a separate column while keeping the original value and country context.

Filter to the relevant trade, then add columns for service-area confirmation, current operating status, and review notes. Open the Yelp page for each candidate to check identity and coverage. A nearby listing or postal code is not proof that the company will serve your exact address.

If you need a business website, find and verify it separately rather than manufacturing one from the company name. Keep the evidence link and date beside that added value. Use opening hours as published context and confirm time-sensitive availability directly before relying on it.

For a local market overview, group businesses by category and area after deduplication. Keep sponsored status separate from organic rank. A capped Yelp search is a discovery sample, not a census of every operating contractor.

For outreach, export only relevant, reviewed businesses and minimize personal data. Public listing information still needs to be used appropriately for your purpose and applicable requirements.

Resolve missing streets and sparse searches

If a business has city and postal code but no street, check whether it is listed as a service-area business before marking the row incomplete. Keep the null street rather than inserting a guessed address.

For no matches, verify the service wording and location on Yelp, then try a nearby neighborhood or broader category. If results reach the cap, use narrower geographic searches with ID deduplication when that serves the task. Missing website fields are a documented limitation, not a reason to rerun at a higher limit.

To compare another local-business source, see 2GIS listings or Google Maps leads. Match identities before merging counts or contacts.

For exporting local Yelp business lists, see the Node.js example. Use the current input fields above if the example differs.

Frequently asked questions

Why is street null for some businesses?

Service-area businesses may have no public storefront. The documented output can use city, state, and postal code while leaving street null.

Are sponsored results included?

Yes. They are marked with sponsored: true and have no organic rank in the documented output.

Does the Actor return business websites?

Not currently. Find and verify a website separately if your workflow needs it.

Piotr Vassev

Piotr Vassev

Founder of FalconScrape. Building production-grade web scraping systems and data automation pipelines for businesses worldwide.

Connect on LinkedIn