Methodology
Every figure on this site, and where it came from.
There are two kinds of number here and no third kind. Either it was measured on a real run of the real scraper, with the raw counters reproduced so the arithmetic can be checked — or it was read off a provider’s own pricing page on a stated date, with the link beside it.
- Place
- Greater London
- Area
- 1,589.2 km²
- Dataset captured
- 2026-08-13
- Businesses
- 34,914
- Proxy traffic measured
- 2026-08-12 · 2026-08-13
- Prices checked
- 2026-08-17
On this page
12 sections
The Greater London capture
One city, captured once, on 2026-08-13. Everything the demonstration draws and every business figure on this site comes from this single file set — not from a live query, and not from a sample of somebody else’s data.
- Businesses
- 34,914
- Distinct Google place ids surviving global de-duplication across the whole sweep.
- km² covered
- 1,589.2
- Greater London, as the OpenStreetMap boundary relation/175342 draws it.
- Categories swept
- 12
- The only categories whose coverage across London is complete.
- Distinct category labels
- 1,941
- Searching twelve categories returns businesses filed under hundreds of neighbouring labels. That gap is a product fact, not a curiosity.
- Data files published
- 25
- 4.58 MB uncompressed, served as static files and filtered in your browser.
- Capture date
- 2026-08-13
- Stated at the same size as the figures, because a large number without its date reads as a live count.
It is a photograph, not a feed. Listings change: businesses close, rebrand, add a website, lose a phone number. Nothing on this site queries Google when you load it, nothing recounts, and no number here will move until the city is captured again. The desktop application is the thing that performs live searches; this dataset exists so that the demonstration can be honest about being a demonstration.
What the capture says about itself
- Source
- Public Google Maps business listings, captured with the LeadCo desktop scraper (LeadCo Scraper 4.1.0).
- Boundary
- Greater London — relation/175342
- Boundary retrieved
- 2026-08-13 from OpenStreetMap via Nominatim, as a 12,919-vertex polygon
- Records
- 34,914 businesses
- Categories queried
- Hairdresser · Barber shop · Beauty salon · Nail salon · Cafe · Dry cleaner · Plumber · Electrician · Dentist · Convenience store · Auto repair shop · Florist
- Published note
- Demo results use a prepared snapshot of public London business listings. The desktop application performs the real searches. Listings change over time; this snapshot is dated above. Phone numbers are not published in this demo dataset.
The twelve categories, and what each returned
Category totals overlap on purpose. A salon Google also files as a barber shop is counted under both, so these columns cannot be added together — the distinct total is the 34,914 above, and the picker in the demonstration computes exact totals for any combination from a membership histogram rather than by summing rows.
| Category | Carrying the label | Trading, phoned, no site |
|---|---|---|
| Hairdresser | 2,329 | 664 |
| Barber shop | 2,563 | 969 |
| Beauty salon | 4,015 | 1,085 |
| Nail salon | 2,027 | 523 |
| Cafe | 2,888 | 823 |
| Dry cleaner | 1,054 | 481 |
| Plumber | 1,586 | 616 |
| Electrician | 1,296 | 476 |
| Dentist | 855 | 115 |
| Convenience store | 3,122 | 1,201 |
| Auto repair shop | 1,229 | 507 |
| Florist | 641 | 88 |
21,526 of the 34,914 businesses carry at least one of the twelve labels themselves. The rest were returned by those searches and are filed under a neighbouring label — which is precisely why combining categories in the application matters.
The rule every figure follows
Measured, or verified against a source with a date. Nothing on this site is estimated, remembered, rounded towards a conclusion, or taken from a comparison article — the capture above is the first case of it, and every chapter below is another.
Measured
It came out of a real run of the real scraper, and the raw counters are published here so the division can be repeated. Every business count on this site is re-tallied from the shipped capture at build time; every proxy figure is a byte counter divided by a business counter.
Verified
It was read off the provider’s own page on a stated date, and the URL is printed with it. A competitor whose real billing model could not be confirmed is left out rather than guessed at.
Three consequences follow, and they are all visible further down this page. Google is labelled modelled everywhere it appears, because no head-to-head Google run was ever executed. The worst measurement is published beside the best one rather than under it. And where a single headline figure would need a unit that does not exist, no headline figure is published at all.
This page is generated from the same modules the rest of the site reads. If the capture, the run journals and the cost model behind the comparison ever disagree about the same run, the build stops instead of publishing whichever one it reached first.
How it was collected
A grid of 1,537 overlapping circles, each one a search the desktop application would perform, run end to end over 12.5 hours.
The lattice
Greater London was cut up before a single request was made, by data-pipeline/build-coverage-plan.mjs on 2026-08-13. The geometry is not arbitrary: the cell radius is the largest circle the application serves from a single viewpoint, so every cell in the plan is a search a customer could run themselves, at the same cost.
- Lattice
- triangular (hex covering)
- Cover radius
- 700 m — every point of Greater London is within this distance of a cell centre
- Harvest radius
- 0.848 km — the largest radius the engine still serves with one viewpoint
- Centre spacing
- 1,212.4 m between nearest neighbours
- Row height
- 1,050 m
- Lattice points considered
- 2,491, of which 1,537 were kept
- Cells
- 1,537 — 1,244 with their centre inside the boundary, 293 straddling it
- Viewpoints
- 1,537 — one per cell, none needed splitting
- Coverage redundancy
- 2.179× — discs must overlap to cover a plane without holes; the hexagonal-packing floor is 1.209
- Per-run ceiling
- 10 minutes and 3,000 requests, the same limits the shipped application enforces
Area per cell works out at 1.03 km², and each cell was captured by one run at the 0.848 km single-viewpoint radius — a disc of 2.26 km², roughly twice its cell, because discs must overlap to cover a plane without holes. The sweep is not a privileged mode: it is 1,537 ordinary runs, queued.
The run
Every cell and every category was attempted, and the sweep’s own journal recorded the outcome of each pair. Those totals are the figures below — read from data-pipeline/sweep-state.json (totals) + data-pipeline/sweep.log, not transcribed from a summary of it.
- Started
- 2026-08-13 at 02:11 UTC
- Finished
- 2026-08-13 at 16:24 UTC
- Elapsed
- 12.48 hours
- Searches planned
- 18,444 — 1,537 cells × 12 categories
- Searches that failed
- 30 (0.16%)
- Requests made
- 97,400
- Requests per cell
- 63.4 on average
- Results returned
- 102,937 before any de-duplication
- Unique within their own cell
- 102,564
- Distinct businesses
- 34,914 after global de-duplication by place id
- Businesses per cell
- 22.7 on average
- Proxy traffic
- 9,268,131,062 bytes
If you re-run this arithmetic from the journal, note its one internal discrepancy: sweep-state.json’s running counter says 1,538 cells, while its per-cell record — the authoritative count, and the one the plan agrees with — holds 1,537. The build pins that off-by-one and fails if it ever grows.
The de-duplication is the number worth sitting with: 102,564 results became 34,914 businesses. Every business inside London was seen about 2.9 times, because overlapping circles is how you cover a plane without leaving holes in it, and because a hairdresser also filed as a beauty salon is returned by two different searches. That redundancy is the cost of exhaustiveness, and it is exactly why the sweep’s traffic per business is nothing like a targeted run’s.
Requests do not divide evenly into results either. This sweep made 97,400 requests for 34,914 surviving businesses — 2,790 requests per 1,000 — against 178 per 1,000 on the targeted runs below. Same engine, 15.6× the request density, because most of a city is not a high street.
The five exclusive groups
The capture split the way the application’s own filters split it: status first, then phone, then website. Applied in a different order the group sizes change, so the order is part of the fact rather than an implementation detail.
| Group | Businesses | Share |
|---|---|---|
| Not tradingGoogle reports the listing as temporarily or permanently closed. | 85 | 0.2% |
| No phone listedTrading, but the listing carries no public telephone number. | 5,122 | 14.7% |
| Has a site of its ownIncludes pages built on Wix, Squarespace and the like. A builder page is a website. | 18,677 | 53.5% |
| Social page onlyA Facebook, Instagram or link-in-bio page and nothing else. | 992 | 2.8% |
| No site at allNo web presence of any kind on the listing. | 10,038 | 28.8% |
| Total | 34,914 | 100.0% |
10,038 and 992 must never be added together.
The application’s Website control is three mutually exclusive buttons — No site at all, Social only, Any. There is no button for the union of the first two. The engine underneath still knows how to express that union, but nothing in the shipped interface emits it, so a headline built on their sum would be a figure no customer could reproduce in the product they had just paid for.
This site published that sum once. It does not any more, it is not computed anywhere in this codebase, and the two figures are kept apart everywhere — in the copy, in the demonstration, and in the field the maps draw from.
Why “has a website” includes builder pages
A page on Wix, Squarespace or business.site is counted in Has a site of its own. That is deliberate. A builder page is a website, and putting those businesses anywhere else would let the two groups below quietly absorb a class that belongs to neither — which would inflate exactly the figure this product is sold on.
Overlapping totals, for comparison
The five groups above are exclusive and sum to the capture. These four are not exclusive, and are stated separately because they answer a different question — how many businesses have a given property at all, regardless of what else is true of them.
- With a phone listed
- 29,768
- With a site of their own
- 20,343
- With a social page only
- 1,232
- With no web presence at all
- 13,339
The file the application writes
Two files ship and there is no third: a CSV carrying whichever of the 36 registry columns the chosen preset names, or a fixed three-column PDF call sheet. This is what is in each of them, down to the byte conventions — material that used to sit behind a disclosure on the homepage, under a file preview that reads better as a preview.
How the CSV is written
- Encoding
- UTF-8 with a byte order mark, so a double-clicked file opens as UTF-8 in Excel on both Windows and macOS.
- Line endings
- CRLF, per RFC 4180.
- Separator
- Comma , or Semicolon ; — a closed set of two. For European Excel, which expects ; as the field separator.
- No sep= line
- Never written. Excel consumes a sep= first line, Google Sheets imports it as a data row, and pandas reads it as the header — so the usual fix for European Excel breaks the other two silently.
- Formula injection
- A cell beginning =, +, -, @, a tab or a carriage return is prefixed with an apostrophe, because those execute on import.
- File name
- <Location> - <N> businesses.csv — N being the number of rows the file actually has, as a plain integer with no thousands separator. A name promising 57 businesses over a 55-row file is a lie.
The PDF
A printable call sheet: A4, rendered by the application itself, and fixed. Three columns — business_name, phone, google_maps_url — in that order. It runs to as many pages as the list needs, each footed with its row range and page number, and a partial run says so on every page rather than only the first. Choosing columns is CSV-only: the PDF is a designed report with a fixed layout, so columns and a field separator do not apply to it.
The three scopes
- All
- Every business the scrape acquired — nothing hidden by a filter, no row dropped for lacking a phone. The default, and what a plain Export writes.
- Filtered
- Exactly what the results table is currently showing, after your filters.
- Selected
- Only the rows ticked on screen. The application refuses this scope when nothing is selected, and refuses it a second time before the export runs.
The two presets
- All fields
- Every column in the registry, in registry order. Writes a CSV.
- Cold calling
- Name, phone and a map link. One page you can work down the side of. Writes the PDF call sheet.
Both are factory presets, and they are the quick-export defaults rather than the whole of the application’s column control: a bare Spreadsheet press writes All fields, a bare PDF press writes Cold calling. Behind Choose columns… every one of the 36 registry fields is individually tickable — a chip under the registry’s own group headings, with Recommended, All and None above them — so a preset is not something anybody picks, it is what they get when they do not. There is still no screen on which to save a third preset. Exporting is never licence-gated either — the records are the customer’s, because they paid for the traffic that collected them.
All 36 columns
Transcribed from the application’s own 36_COLUMNS.js registry, in registry order, which is the order a wide CSV is written in. The first column is the literal header in the file; the second is what the application calls that column on screen. If a future version renames one, this table is wrong until it is re-transcribed — which is why the count is asserted when this site is built rather than typed into a sentence, and why a duplicate header or an unknown group stops the build.
There is no email column, no owner name, no employee count and no revenue, because a Google Maps listing carries none of them. There is deliberately no phone_digits either: a long run of digits is rendered by Excel as 4.42079e+11, and a column that corrupts on open is worse than no column.
The registry, row by row
36 columns
| Header in the file | In the application | Group |
|---|---|---|
| row | # | Run & source |
| business_name | Business | Business |
| primary_category | Category | Categories |
| all_categories | All categories | Categories |
| matched_categories | Matched categories | Categories |
| found_by_query | Found by | Categories |
| phone | Phone | Contact |
| phone_display | Phone (local) | Contact |
| website | Website | Web |
| website_host | Domain | Web |
| web_presence | Web presence | Web |
| web_kind | Web kind | Web |
| rating | Rating | Rating & status |
| review_count | Reviews | Rating & status |
| business_status | Status | Rating & status |
| business_status_code | Status code | Rating & status |
| eligibility_class | Eligibility | Classification |
| chain_flag | Chain | Classification |
| hours_today | Hours today | Opening hours |
| hours_weekly | Opening hours | Opening hours |
| address | Address | Location |
| city | City | Location |
| distance_km | Distance (km) | Location |
| latitude | Latitude | Location |
| longitude | Longitude | Location |
| place_id | Place ID | Business |
| cid | CID | Business |
| google_maps_url | Maps link | Business |
| scraped_at | Scraped at | Run & source |
| search_location | Search location | Run & source |
| search_location_id | Location ID | Run & source |
| search_latitude | Search latitude | Run & source |
| search_longitude | Search longitude | Run & source |
| search_radius_km | Search radius (km) | Run & source |
| search_region | Region | Run & source |
| source | Source | Run & source |
What the homepage preview can and cannot fill
The file drawn on the homepage is three real rows of one real run, and every cell in it is one of three things. These are the two explanations that do not fit under a three-row table, and the reason the preview carries only the other two.
An en dash is a cell that is empty in your own file too
rating and review_count are written blank, never 0, when Google sent no value — a zero would assert a fact about a business that was never measured. And website and website_host are empty for every row of that particular file in the customer’s copy as well, because “no website” is the filter that selected those rows in the first place.
Two columns are coarser on this website than in your file
city carries the city name in the product — Zagreb, Rijeka — but the London capture published here was compressed down to the postcode district, so the preview shows W1F. And scraped_at carries the full timestamp in the product, where this site’s manifest records only the date the capture was taken. Both under-state the column, which is the safe direction to be wrong in, and both are named on the header cell rather than left to be inferred.
The middots are the columns this website does not publish at all — real columns of the customer’s file that the public demo has no value for. Two of them are the phone columns, and that omission is a decision rather than a gap: what is deliberately not published, below. Inventing values would be the alternative, and a fabricated telephone number is a fabricated telephone number — a fabricated place_id is worse, because it looks checkable.
Proxy traffic, measured twice
LeadCo runs through a proxy account you hold, and that account bills by the gigabyte. It is the one variable cost of using this product, so it is measured rather than estimated — on the cheapest realistic shape of work, and on the most expensive one there is.
Typical run · 2026-08-12
Ten city-centre runs
0.5 km radius, five categories per city, cache off. No blocks, no failed searches. This is the shape of work a customer actually does: drop a pin somewhere populated, pick a few categories, take the list.
- Proxy bytes
- 40,808,045
- Requests
- 467
- Businesses
- 2,617
- Application version
- 4.0.0
Exhaustive sweep · 2026-08-13
Greater London, swept end to end
1,537 cells, 12 categories, 12.5 hours. Heavy cell overlap — the upper bound, not the typical case. It is the worst case on purpose — a grid sweep re-scans overlapping cells and covers parks, water and industrial estates that hold no businesses at all.
- Proxy bytes
- 9,268,131,062
- Requests
- 97,400
- Businesses
- 34,914
- Application version
- 4.1.0
Publishing the second figure is the point. One measurement, taken on the cheapest realistic run, would make the traffic cost of this product look like a settled number. It is not: it is a range that moves by a factor of 17.02 depending on how much empty ground the search covers, and the honest way to say that is to publish both ends and let the reader decide which one their work looks like. The comparison below carries both as separate rows for the same reason, and ranks LeadCo on the expensive one.
Why a gigabyte here is 1,000,000,000 bytes
Proxy providers bill in decimal gigabytes, so that is the unit every traffic figure on this site is expressed in. The binary gigabyte would be the flattering choice, which is the reason to write this down rather than leave it as an implementation detail.
A gibibyte is 1.074 times a gigabyte, so quoting traffic in gibibytes produces a smaller-looking number for the same bytes — and since traffic is the cost LeadCo asks you to carry, a smaller-looking number is a cheaper-looking product. It would be wrong in our favour, and by more than most people would notice. Every figure on this site divides by 1,000,000,000.
Competitor and supplier prices
Every price below was read off the provider’s own page on 2026-08-17. The link is printed with each one, because a price without a source is an assertion and a price without a date is a guess about today.
Read this before you read a single number.
These providers do not share a unit. Google bills per 1,000 requests, and one Nearby or Text Search request returns up to 20 places. Apify and Outscraper bill per result. DataImpulse bills per GB of bandwidth. Any comparison built on the headline figures is misleading in whichever direction it happens to be drawn.
Worked through: Google’s search SKU at $32.00 per 1,000 requests, at 20 places a request, is $1.60 per 1,000 places — cheaper than Outscraper’s $3.00 per 1,000 records. Google only becomes the expensive option once Place Details is added at one request per place. That correction runs against us, and it is here because leaving it out would be the easiest way to make this section lie.
DataImpulse — Rotating residential proxies
Bills per GB of bandwidth · checked 2026-08-17
| Item | Price | Unit | Currency |
|---|---|---|---|
| Residential, pay as you go | $1.00 | per GB | USD |
| Residential, Basic (50 GB) | $1.00 | per GB | USD |
| Residential, Advanced (1 TB) | $0.80 | per GB | USD |
| Mobile | $2.00 | per GB | USD |
| Premium residential | $5.00 | per GB | USD |
| Premium residential, above 1 TB | $4.00 | per GB | USD |
| Datacenter | $0.50 | per GB | USD |
| Custom (5 TB and above) | from $4,000 | per contract | USD |
- Free tier
- None. The minimum purchase is 5 GB for $5.
- Source
- https://dataimpulse.com/residential-proxies/
- This is not a competitor. It is the variable cost a LeadCo customer pays to a third party, and LeadCo receives none of it.
- Traffic never expires, there is no subscription and no monthly commitment. Country-level targeting is included; city and ASN targeting are charged extra.
- The provider publishes no pricing page: dataimpulse.com/pricing/ returns HTTP 404, and the table lives on the home page and the per-product pages instead. That is why the source link is not a /pricing URL.
- Any rotating residential provider works with LeadCo. DataImpulse is only the one the setup instructions are written for.
Apify — Google Maps Scraper (compass/crawler-google-places)
Bills per result · checked 2026-08-17
| Item | Price | Unit | Currency |
|---|---|---|---|
| Place scraped — headline rate | from $1.50 | per 1,000 places | USD |
| Place scraped, Free plan | $4.00 | per 1,000 places | USD |
| Filter applied, Free plan | $1.00 | per 1,000 places, per filter | USD |
| Filter applied, Business plan | $0.53 | per 1,000 places, per filter | USD |
- Free tier
- Apify publishes a free platform plan; the Actor bills per result on top of it.
- Source
- https://apify.com/compass/crawler-google-places
- The headline rate covers the base “place scraped” event only. Additional place details, contacts enrichment, per-review extraction, social-profile enrichment, leads enrichment, email verification and competitor analysis are each charged separately.
- Per-event rates fall as the subscription tier rises. Apify’s own worked example puts the same 100-place job at about $17.90 on Free against about $6.50 on Silver — a 2.75× swing from the subscription tier alone, before a single line of the job changes.
- Apify’s own wording for the filter add-on: “Final price = places scraped * filter price * number of filters.”
Apify — Platform subscription
Bills per month, with included usage · checked 2026-08-17
| Item | Price | Unit | Currency |
|---|---|---|---|
| Free — includes $5 usage | free | per month | USD |
| Starter — includes $29 usage | $29.00 | per month | USD |
| Scale — includes $199 usage | $199.00 | per month | USD |
| Business — includes $999 usage | $999.00 | per month | USD |
| Compute unit, Free and Starter | $0.20 | per CU | USD |
| Compute unit, Business | $0.13 | per CU | USD |
- Free tier
- Free — $0/month, including $5 of usage.
- Source
- https://apify.com/pricing
- A 10% discount applies to annual billing.
- Apify’s own wording: “unused usage credits are not rolled over… they expire at the end of the billing cycle.” Included usage is therefore a floor on the monthly bill, not a balance.
- The homepage comparison charges Apify at its Business unit price without adding this subscription fee, which makes that comparison generous to Apify rather than to LeadCo.
Outscraper — Google Maps data
Bills per result · checked 2026-08-17
| Item | Price | Unit | Currency |
|---|---|---|---|
| Records 1–500 | free | per record | USD |
| Records 501–100,000 | $3.00 | per 1,000 records | USD |
| Records above 100,000 | $1.00 | per 1,000 records | USD |
- Free tier
- The first 500 businesses each period are free.
- Source
- https://outscraper.com/pricing/
- Pay as you go, with no monthly fee.
- The tiers reset every 30 days, so a buyer is pushed back into the $3 band each month unless they sustain more than 100,000 records a month. A 5,000-place month is $13.50, not $15.
- The homepage comparison walks these bands rather than multiplying by a headline rate, because the band a buyer sits in changes every month that their volume does.
Google — Places API (New)
Bills per 1,000 requests · checked 2026-08-17
| Item | Price | Unit | Currency |
|---|---|---|---|
| Nearby / Text Search — Essentials & Pro, 0–100k | $32.00 | per 1,000 requests | USD |
| Nearby / Text Search — Essentials & Pro, 100k–500k | $25.60 | per 1,000 requests | USD |
| Nearby / Text Search — Essentials & Pro, 500k+ | $9.60 | per 1,000 requests | USD |
| Nearby / Text Search — Enterprise, 0–100k | $35.00 | per 1,000 requests | USD |
| Nearby / Text Search — Enterprise, 100k–500k | $28.00 | per 1,000 requests | USD |
| Nearby / Text Search — Enterprise, 500k+ | $10.50 | per 1,000 requests | USD |
| Place Details — Essentials, 0–100k | $5.00 | per 1,000 requests | USD |
| Place Details — Pro, 0–100k | $17.00 | per 1,000 requests | USD |
| Place Details — Enterprise + Atmosphere, 0–100k | $25.00 | per 1,000 requests | USD |
- Free tier
- Per SKU, per month: 10,000 Essentials requests, 5,000 Pro, 1,000 Enterprise. The pricing model effective 1 March 2025 replaced the old $200 monthly credit with these per-SKU allowances.
- Source
- https://developers.google.com/maps/billing-and-pricing/pricing
- Billed per REQUEST, not per business returned. One Nearby or Text Search response carries at most 20 places, paginating to 60 across three requests.
- The tier is chosen by the fields you ask for. places.nationalPhoneNumber and places.websiteUri both sit in the Enterprise tier — and those two fields are exactly the qualification LeadCo performs, so this particular question selects the most expensive SKU there is.
- Place Details is charged at one request per place, which is what turns a cheap-looking search SKU into an expensive dataset.
- Google Maps Platform imposes its own terms on storing and reusing results. Read them before building a prospect list from this API.
Google — Google Maps Platform subscriptions
Bills per month, with an included call allowance · checked 2026-08-17
| Item | Price | Unit | Currency |
|---|---|---|---|
| Essentials — about 100,000 calls | $275.00 | per month | USD |
| Pro — about 250,000 calls | $1,200.00 | per month | USD |
| Enterprise | quoted | per month | USD |
- Free tier
- Covered by the per-SKU monthly allowances above.
- Source
- https://mapsplatform.google.com/pricing/
- A third unit again: a monthly fee with an included call allowance, which is neither a per-request price nor a per-result one.
What the cost comparison actually uses
The comparison in the next chapter consumes a narrower list than the record above — only the rows a calculation multiplies. Same providers, same pages, read the same day (2026-08-17). The overlap between the two lists is checked figure by figure when this page is built, and the build stops rather than publishing two prices for one thing.
| Provider | Billing model | Prices used | Checked |
|---|---|---|---|
| DataImpulseResidential proxies (pay as you go)Read from DataImpulse’s own pricing page | Per GB of proxy traffic |
| 2026-08-17 |
| ApifyGoogle Maps Scraper (compass/crawler-google-places)Read from Apify’s own pricing page | Per result returned |
| 2026-08-17 |
| OutscraperGoogle Maps data (pay as you go)Read from Outscraper’s own pricing page | Per result returned |
| 2026-08-17 |
| GooglePlaces API (New) — Nearby SearchRead from Google’s own pricing page | Per API request |
| 2026-08-17 |
The exchange rate
Every provider above publishes in US dollars and every LeadCo price is in euro, so one conversion decides most of the comparison. It uses the rate published by the issuer of the currency, on a stated day, rather than a number somebody remembered.
- Rate
- 1 EUR = 1.1593 USD
- Authority
- European Central Bank — euro foreign exchange reference rates
- Read on
- 2026-08-17
- Source
- the published series, read from the daily feed
- Caveat
- Published each working day at 16:00 CET. A reference rate, not a dealing rate — the rate your bank or card applies on the day will differ.
The assumptions behind the comparison
- Assumption 1: LeadCo's proxy consumption is measured, not estimated. The figures come from real runs of the LeadCo desktop scraper: 2,617 businesses across ten city centres on 2026-08-12, and a full 34,914-business sweep of Greater London on 2026-08-13. The raw byte and request counters for both runs are printed under "Proxy traffic, measured twice" on the methodology page.
- Assumption 2: The two runs are 17.02× apart per 1,000 businesses, so they are always published side by side and never averaged into one figure. There is no single "it costs this much per thousand" number on this site, and given that spread there should not be.
- Assumption 3: The LeadCo figure is the Yearly licence divided by twelve — €390 ÷ 12 = €32.50 a month — so it can sit on the same monthly axis as costs that genuinely are monthly. It is not a billing option: month to month is €49, and the licence is charged once a year.
- Assumption 4: Proxy cost is DataImpulse's published pay-as-you-go residential rate of $1.00 per GB, in decimal gigabytes, which is how proxy traffic is billed. It is bought from and billed by the provider; LeadCo receives none of it and ships no proxy.
- Assumption 5: Apify is charged at its Google Maps Scraper's published per-place price plus its published per-filter add-on, applied 3 times — category, website presence and open/closed status — because a run that returns what LeadCo returns applies those filters. Apify's own wording is "Final price = places scraped * filter price * number of filters". Its platform subscription fee is not added, which makes the comparison generous to Apify.
- Assumption 6: Outscraper is charged by walking its published bands rather than by a headline rate: the first 500 records each period are free, records up to 100,000 are $3.00 per 1,000, and records above that are $1.00 per 1,000.
- Assumption 7: Google is MODELLED, not measured. Its published Nearby Search Enterprise price is $35.00 per 1,000 requests — the tier its own documentation says is triggered by places.nationalPhoneNumber and places.websiteUri, which are exactly the two fields this job needs — and its free allowance of 1,000 Enterprise requests a month is subtracted. A Nearby Search response carries at most 20 places, so 1,000 places cost at least 50 requests. That floor is arithmetic on Google's own limit; the realistic end uses LeadCo's measured request density over the same geography as a stand-in, because running the real experiment would mean paying Google for tens of thousands of billable calls.
- Assumption 8: The four prices are NOT the same unit. Google bills per request, Apify and Outscraper bill per result returned, DataImpulse bills per GB, and LeadCo charges a licence. Any single "x times cheaper" number would be inventing a common unit that does not exist, which is why the comparison shows a cost for a stated workload and shows its working instead.
- Assumption 9: Dollar prices are converted at the European Central Bank — euro foreign exchange reference rates: 1 EUR = 1.1593 USD, read 2026-08-17. It is a reference rate, not a dealing rate — the rate on the day you buy will differ.
- Assumption 10: Prices were read from each provider's own pricing page on the date shown beside it. Verify current provider pricing before you buy anything.
Verify current provider pricing before you buy anything. These are prices on a date, not a quote, and every one of these providers is free to change them tomorrow.
What each tool charges, and what a month costs
Two tables. The first is how each tool bills, which is the choice a buyer is actually making. The second is what a month costs on each model at three workloads, built from the prices above. The homepage publishes the verdict these produce and sends you here for the working.
How each model charges
The rows are the five questions that decide which model suits a buyer, and every competitor cell is a property of that provider’s published billing model rather than a criticism of anyone who uses it. Two of these rows are reasons a buyer might rightly choose the other thing. Billing models read from each provider’s own pricing page on 2026-08-17.
| The question | LeadCoA desktop licence. Runs on your machine, through your own proxy account. | ApifyGoogle Maps Scraper. Billed per place scraped, plus every filter applied. | OutscraperGoogle Maps data, pay as you go. Billed per record returned. | GooglePlaces API (New) — Nearby Search. Billed per request, not per business. |
|---|---|---|---|---|
| What you pay for | The software. One licence for the application — €390 a year or €49 a month — however often you run it. | Each place the platform scrapes, plus an added charge for every filter the run applies. | Each record the platform returns. | Each API request. One Nearby Search returns at most 20 places, and covering an area takes many of them. |
| Credits, or a balance to spend down | None. There is no credit balance to top up and nothing that runs out mid-month. | Usage is metered per event and drawn against a platform plan. | No monthly fee, and records are metered. The first 500 businesses in each period are free. | Requests are metered. 1,000 Enterprise requests per month at no charge (5,000 on Pro, 10,000 on Essentials). |
| Export limit | None. CSV or PDF, as many times as you like. LeadCo counts no exports and charges for none of them. | Every result you export was billed when it was scraped. | Every record you export was billed when it was returned. | There is no export. The API returns JSON to software you write and maintain. |
| Ten times the volume | The same licence. Only your own proxy traffic rises with it, billed by your provider at their rate. | Ten times the results costs ten times as much, permanently. | Ten times the cost, until sustained volume above 100,000 records drops the rate. The bands reset every 30 days. | Ten times the requests, at the same published price inside the first band. |
| Where the run happens | Your machine. Results are written to your disk. There is no queue and no account to hold them. | On the provider’s platform, which holds the account and the run. | On the provider’s platform, which holds the account and the run. | On Google’s API, called by software you build and maintain. |
What a month costs
These are not the same unit. The box at the top of the chapter above says why, and it is worth carrying into this table: nothing here can be divided by anything else here to produce an “x times cheaper”. What a row shows is what a stated workload costs on that model, with its provenance printed beside it — measured, a list price, or modelled.
| Model | 1,000 a month | 10,000 a month | 100,000 a month | Provenance |
|---|---|---|---|---|
| LeadCo, typical runYearly licence ÷ 12 + your own proxy traffic | €32.51€32.50 licence + €0.01 proxy | €32.63€32.50 licence + €0.13 proxy | €33.85€32.50 licence + €1.35 proxy | Measured traffic + list price2026-08-12 |
| LeadCo, exhaustive sweepThe same licence, at 17× the measured traffic | €32.73€32.50 licence + €0.23 proxy | €34.79€32.50 licence + €2.29 proxy | €55.40€32.50 licence + €22.90 proxy | Measured traffic + list price2026-08-13 |
| ApifyPer place scraped, plus three filters | €2.67 | €26.65 | €266.54 | List price2026-08-17 |
| OutscraperPer record, first 500 free | €1.29 | €24.58 | €257.48 | List price2026-08-17 |
| Places API, best case20 places per request — the ceiling Google sets | €0Inside the free monthly allowance | €0Inside the free monthly allowance | €120.76 | Modelled2026-08-17 |
| Places API, realisticAt LeadCo’s measured request density over the same ground | €0Inside the free monthly allowance | €23.68 | €508.56 | Modelled2026-08-17 |
The LeadCo rows divide the Yearly licence by twelve — €390 ÷ 12 = €32.50 — so the figure sits on the same monthly axis as costs that genuinely are monthly. It is not a billing option: month to month is €49, and the licence is charged once a year. Pricing it month to month instead does not change which model is cheapest at any of these three workloads — that is checked when this page is built, not asserted.
Every other assumption these figures rest on — the proxy rate and who bills it, how each competitor’s published price is applied, and what is modelled rather than measured — is listed in full at the end of the chapter above.
What this evidence does not settle
A benchmark is worth what it admits it cannot answer. These are the limits of the comparison, published beside it rather than under it.
A metered service wins at low volume, and the table shows it
At the smallest workload published here, both per-result services cost less than a licence and Google’s free monthly allowance covers the job outright. A fixed cost spread over a few hundred businesses is a large cost per business. That is arithmetic, and hiding it would make everything else here less believable.
Google’s figure is modelled, not run
No head-to-head Google execution was performed. Its rows are arithmetic on its own published SKU price, and there are two of them rather than one because the number of requests an equivalent sweep needs depends on how the area is tiled. It is ranked on the worse of the two.
Google cannot reproduce the same geographic sweep semantics
A Nearby Search takes a point and a radius and returns up to twenty places ranked by prominence. It does not enumerate every business in an area, so a wide sweep means tiling overlapping requests and de-duplicating — which is a different operation from the one LeadCo performs, not a cheaper version of it. It is also not a product: the API returns JSON to software you write.
The largest workload here is extrapolated, not measured
The biggest run LeadCo has actually measured returned 34,914 businesses. The 100,000-a-month column applies measured traffic per 1,000 to a volume no single measured run reached, and nothing beyond it is published at all.
Rate limits, blocks and terms are not costed
Each provider carries its own operational constraints and its own terms on storing and reusing results, and a LeadCo run depends on a third-party source, your proxy account and your own machine. None of those appear as a number in this table.
And the limits of the capture itself
One city, one day, twelve categories
Everything on this page describes Greater London on 2026-08-13, swept for 12 categories out of the far larger catalogue the application offers. London is denser, better documented and more competitive than most places a customer will search, so the proportions here are not a forecast of what your own area looks like.
It is what Google published, not what is true
Every field comes from a public Google Maps listing. A business with a website that never added it to its listing is counted as having none; a business that closed last week may still be listed as trading. LeadCo reports the listing accurately. It cannot audit it, and neither can this page.
Opening hours are not consulted
The status filter keeps businesses Google reports as open or unreported, and nothing in the shipped application reads the day’s hours. A restaurant that opens at six in the evening is in the list at eleven in the morning.
The traffic figures are two runs, not a distribution
Two measurements bound a range; they do not describe what falls between them. Your own consumption depends on the density of the area, the categories you pick and your proxy provider’s own overhead, and the only figure that will ever be exactly right for you is the one your own provider bills you.
Nothing here was run on a competitor’s account
No Apify job, no Outscraper job and no Google Places call was executed for this comparison. Their columns are arithmetic on their own published prices, applied to a workload LeadCo measured. Where that is a weakness, it is labelled as one.
What is deliberately not published
Three things this site could put on a page, has the data for, and does not. Each omission is a decision with a reason, and the reasons are worth more than the numbers would have been.
No telephone numbers
The demonstration’s whole premise — has a phone, has no website — works perfectly from a boolean, so a boolean is what ships. The published chunks carry a tel column that is 1 when a listing has a public number and 0 when it does not. The number itself is never written to a file this site serves, and email addresses are never captured at all.
- Records checked
- 34,914 across 25 files
- Distinct values in the tel column
- 0, 1
- Verdict
- Boolean only. No telephone number is published by this website.
That row is recomputed from the shipped files every time this page is built, rather than asserted. Publishing 34,914 real telephone numbers would have turned a marketing page into a free copy of the product, and those businesses did not agree to it.
No universal cost-per-thousand for proxy traffic
It would be easy to multiply a gigabyte figure by a proxy rate and print one tidy “X cents per 1,000 businesses”. With a measured spread of 17.02× between the two runs above, that single number would be wrong by an order of magnitude for one of them — and it would be presented with the same confidence in both cases. So no such figure appears anywhere on this site. What is published instead is the two measured traffic figures, the proxy rate with its source, and a comparison that prices each shape of run as its own row rather than blending them into one.
No live counters
Nothing on this site counts up, refreshes, or claims to be current. 34,914 is a photograph of Greater London on 2026-08-13, and the date is printed beside the figure everywhere it appears — including on the homepage, at the same size as the number. A large figure without its date reads as a live count, and that would be the one claim on this site a buyer could disprove by opening the application.
Checking it yourself
Every figure on this page is read from a file when the site is built, and the most direct check of all needs nothing from us but a browser.
What the build reads
Two of these you can open now. The capture and its chunk files are served from this site at /data/london/manifest.json and /data/london/chunks/ — the same files the demonstration on the homepage downloads to draw itself, so the 34,914 businesses above are countable by anybody with a browser. The rest are paths in this site’s own repository, which is not published: they are named so that the list of inputs to this page is fixed and countable, and so a correction has something exact to point at, not because you can follow them.
- The capture
- public/data/london/manifest.json
- The records
- public/data/london/chunks/ — 25 files, 4,582,101 bytes uncompressed
- The lattice
- data-pipeline/coverage-plan.json
- The run journal
- data-pipeline/sweep-state.json (totals) + data-pipeline/sweep.log
- The targeted runs
- _benchmarks/benchmark-2026-08-12T16-59-18.json
- The tallying rules
- src/components/marketing/london-facts.ts
- The prices and the model
- src/config/economics.ts and src/components/evidence/price-sources.ts
The most direct check is not a file, though. Every business in this capture is a public Google Maps listing: pick one from the demonstration, open it on Google Maps, and see whether it says what we said it says. That is a better proof than any table on this page, and it is the one we would rather you ran.
If a figure here is wrong, we would like to know before your customers do. Write to thewebsitelabs@gmail.com with the number and where you found it. We aim to reply within 3 business days.
The other half of this is where your data goes — what runs on your machine, what reaches ours, and what neither of us stores. Pricing for the application itself is on the pricing page.
Business figures re-tallied from the 2026-08-13 capture at build time. Proxy traffic measured 2026-08-12 and 2026-08-13. Provider prices read 2026-08-17. Calculator inputs checked 2026-08-17.