Local Business Scraper — fill-rate report
Pricing
from $1.00 / 1,000 business rows
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
Maintained by CommunityActor 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, and the legal footing
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):
| Field | Notes |
|---|---|
id | stable place identifier |
name | business name |
address | full street line when available, composed line otherwise |
latitude, longitude | exact coordinates |
category / categories | primary category, then up to 10 |
rating | rating, or null — see Completeness, measured below |
reviewsCount | review count, or null when the source omits it |
phone | international or national format, as published |
website | the business's own site — never a map or tracking URL |
url | direct link to the place |
enriched | true when both phone and website are present |
batchCompleteness | the 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
| Field | Required | Default | Meaning |
|---|---|---|---|
searchTerm | yes | — | what you're looking for, in plain words |
city | one of the two | paris | 16 preloaded cities |
latitude + longitude | one of the two | — | any other point on earth |
radiusKm | no | 4 | half-width of the swept area |
gridSize | no | 3 | grid fineness: 1, 3×3=9, up to 6×6=36 points |
listDepth | no | 20 | pages read per point: 1 = first page, 20 = to the bottom |
maxResults | no | 500 | hard 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:
| Event | Price | What it is |
|---|---|---|
place | $1.00 per 1,000 rows | a business row |
place-contact | $2.00 per 1,000 rows | a 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.
reviewsCountis 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,
ratingcoverage:City ratingcoverageParis, Lyon, New York, London, Marrakech ~100% Madrid ~50% Berlin 0% Tokyo flips between runs This is a property of the source, not of the tool — and it is exactly what
batchCompletenessexists 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:
- Places API — one flat unit per enriched business record. See the full pricing breakdown: https://rankfabrik.com/google-places-api-pricing
- Sibling APIs on the same principle: Jobs (past the 1,000-result cap) and YouTube transcripts (human-vs-auto caption transparency).
One engine feeds both; the measured fill rate is identical. You pick the billing model that fits.
Legal & responsible use
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.