Local Business Scraper — fill-rate report avatar

Local Business Scraper — fill-rate report

Pricing

from $1.00 / 1,000 business rows

Go to Apify Store
Local Business Scraper — fill-rate report

Local Business Scraper — fill-rate report

Search a term and a city to get clean local-business records: verified name, full address, exact coordinates and a direct link on essentially every row. The real fill-rate of phone, website and rating is measured and published for every run, before you pay.

Pricing

from $1.00 / 1,000 business rows

Rating

0.0

(0)

Developer

RankFabrik Team

RankFabrik Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 days ago

Last modified

Categories

Share

Local Business Scraper — name, address, coordinates and a direct link on every row

Point it at a search term and a city, and it returns clean, ready-to-use business records: a verified name, a full address, exact coordinates and a direct link on essentially every row. The exact fill-rate is printed at the bottom of this page, because it is published for every run.

The fields that actually decide whether a lead is worth calling (phone, website, rating) are never guaranteed by the source, and most scrapers let you find that out only after you have paid. This one measures the real fill-rate of those fields and shows it to you before you commit your budget.

Unofficial tool — not affiliated. This is an independent tool. It is not affiliated with, endorsed by, or sponsored by Google, Google Maps, or any other third-party service. All product names, logos and brands are the property of their respective owners and are used for identification only.

Public data only. It reads solely the public, logged-out channel of the source: no account, no login, no session, and no circumvention of any technical protection or anti-bot measure. It accesses only what is already visible to any anonymous visitor.


Reviews are handled cautiously. The source's terms (updated 14 January 2026) exclude commercial reuse of review text, so we don't collect or resell it: a legally shaky field isn't worth the row, however tempting it would be to include. That is why reviewsCount stays a count, never the review bodies.

You see the fill-rate before you pay, not after

Most scrapers work in the dark: you pay, you run, and only then do you learn how many rows actually carry a phone number or a website. This one turns that around. Every run reports the live fill-rate of phone, website and rating in two places — the run's status message while it works, and a batchCompleteness block on every single row. So you can start with a small run, read the real numbers for your exact search, and scale up only when they look worth it. And if a request produces nothing at all, it is never billed — see Pricing.


What you get

One row per business, deduplicated on the place identifier (never on the name, so two branches of the same chain both survive):

FieldNotes
idstable place identifier
namebusiness name
addressfull street line when available, composed line otherwise
latitude, longitudeexact coordinates
category / categoriesprimary category, then up to 10
ratingrating, or null — see Completeness, measured below
reviewsCountreview count, or null when the source omits it
phoneinternational or national format, as published
websitethe business's own site — never a map or tracking URL
urldirect link to the place
enrichedtrue when both phone and website are present
batchCompletenessthe completeness percentages of this run

No field is ever inferred. If the source does not publish a phone number, you get a clean null — never a plausible-looking number invented by a language model to fill the gap. That is a deliberate choice: a made-up field looks like data right up until it costs you a wasted call, and inferred contact details are the single most common complaint about tools in this category. We would rather hand you an honest blank.

The batchCompleteness percentages mirror exactly what the source publishes, not what we drop. A 0% means the source itself simply does not expose that field for those listings (Berlin is the measured example further down) — and because you read that figure before you pay, an empty field is never a surprise you discover after the run.


Example output — one row, illustrative

{
"id": "<stable place id>",
"name": "Example Dental Office",
"address": "12 Example Ave, New York, NY 10001, USA",
"latitude": 40.7128,
"longitude": -74.0060,
"category": "Dental clinic",
"categories": ["Dental clinic", "Dentist"],
"rating": 4.6,
"reviewsCount": 128,
"phone": "+1 212 000 0000",
"website": "https://example-dental.com",
"url": "https://www.google.com/maps?cid=0000000000000000000",
"enriched": true,
"batchCompleteness": {
"name": 100,
"address": 98,
"coordinates": 100,
"rating": 91,
"phone": 74,
"website": 61,
"category": 99,
"todayHours": 55
}
}

batchCompleteness is identical on every row of a given run — read it once and you know the fill-rate of the whole batch, not just this line.


Input

FieldRequiredDefaultMeaning
searchTermyeswhat you're looking for, in plain words
cityone of the twoparis16 preloaded cities
latitude + longitudeone of the twoany other point on earth
radiusKmno4half-width of the swept area
gridSizeno3grid fineness: 1, 3×3=9, up to 6×6=36 points
listDepthno20pages read per point: 1 = first page, 20 = to the bottom
maxResultsno500hard ceiling on delivered (and billed) rows

Example:

{
"searchTerm": "dental office",
"city": "new york",
"radiusKm": 6,
"gridSize": 4,
"listDepth": 20,
"maxResults": 400
}

Pricing

Pay per result, in two tiers, because not all rows are worth the same to you:

EventPriceWhat it is
place$1.00 per 1,000 rowsa business row
place-contact$2.00 per 1,000 rowsa row with both phone and website

You are charged per row written to your dataset, and for nothing else. Failed runs, refused requests and empty areas cost you zero. Your own spending cap is enforced by the platform — the run stops cleanly when it is reached, mid-dataset, without burning compute you did not authorise.


How the search works, and what to expect

A single map point returns at most 20 businesses, so density comes from the grid, not from a bigger page. radiusKm sets how wide an area you sweep, gridSize sets how finely it is divided (1 point, a 3×3 grid of 9, up to a 6×6 grid of 36), and listDepth sets how deep you page each point. More points and more pages mean denser coverage of the same area. The full completeness picture that comes back, including the honest 0%, is published up front so you know what to expect before you buy.

  • Reviews are not included. reviewsCount is a review count, not review text. The review bodies are not available through this channel, and the source's terms (updated 14 January 2026) exclude commercial reuse. We do not sell what we cannot deliver lawfully.

  • Ratings are not uniform by city. Measured, rating coverage:

    Cityrating coverage
    Paris, Lyon, New York, London, Marrakech~100%
    Madrid~50%
    Berlin0%
    Tokyoflips between runs

    This is a property of the source, not of the tool — and it is exactly what batchCompleteness exists to tell you, run by run.

  • An empty result is never charged. If the source refuses the request, the run reports the reason and bills you nothing.


Prefer a hosted API with a flat monthly plan?

This actor bills per result on the Apify platform. If you'd rather call a hosted endpoint with your own key, a flat monthly quota, and the same completeness block on every response, the same data ships as a standalone API:

One engine feeds both; the measured fill rate is identical. You pick the billing model that fits.


Your responsibility as the user. You are solely responsible for how you use the data this tool returns, including compliance with applicable laws, the source's terms, data-protection rules (GDPR/CCPA), and third-party rights. We provide a data-access tool and make no representation that any particular use is lawful in your jurisdiction.

Personal data notice. Business contact details such as phone numbers may constitute personal data under the GDPR even when publicly available. If you process them you act as the data controller: you must have a lawful basis (for B2B outreach, typically legitimate interest, Art. 6(1)(f)), inform data subjects where required (Art. 14), and honor objection and erasure requests (Arts. 21, 17).

Removal requests. If you are a data subject or a rights holder and want a specific record removed, contact contact@rankfabrik.com. Justified requests are processed promptly (target: within 30 days).


Support

Questions and bug reports go through this actor's Issues tab. If a run returned something you think is wrong, quote the run: every execution logs its completeness figures, so the conversation starts from the same numbers you saw.