Maps Duplicate Places Audit and Merge Review avatar

Maps Duplicate Places Audit and Merge Review

Pricing

from $2.00 / 1,000 duplicate group revieweds

Go to Apify Store
Maps Duplicate Places Audit and Merge Review

Maps Duplicate Places Audit and Merge Review

Identify duplicate location records and review merge evidence before CRM/import operations. For Location database maintainers and data stewards. Check the live Pricing tab and input limits.

Pricing

from $2.00 / 1,000 duplicate group revieweds

Rating

0.0

(0)

Developer

Practical AI Lab

Practical AI Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Security

Limited permissions

Share

Analyze a places or business dataset you already have and get a reviewable list of likely duplicates, with a suggested keep row and a suggested merged record for each group.

This Actor does not scrape Google Maps or any other website. It makes no web requests. It only reads rows you give it: either pasted JSON or a dataset you already own on Apify.

What it does

  • Groups rows that share a place ID.
  • Groups rows that are within a distance tolerance and have a similar normalized title (case, accents, punctuation and words such as "The", "LLC" and "Inc" are ignored).
  • Groups rows with an identical normalized title plus a matching phone number or address.
  • Treats a shared website as weak evidence only (chains share sites) and never auto-merges on it.
  • Builds groups transitively (A matches B, B matches C, so A, B and C form one group).
  • Labels each group auto_merge or needs_review, lists the evidence and any conflicts, and suggests which row to keep and which empty fields can be filled from the other rows.

It never deletes or edits your source data. You apply the decisions yourself.

Input

FieldMeaning
datasetIdAn existing dataset ID. Takes priority over items.
itemsInline JSON rows (the prefilled sample works as is).
coordinateToleranceMetersMaximum distance for a location match. Default 75.
minTitleSimilarityMinimum title score for a candidate. Default 0.85.
autoMergeTitleSimilarityScore at or above which a nearby match is auto_merge. Default 0.95.
fieldMappingOptional field-name overrides, for example {"title": "businessName", "latitude": "gps.lat"}.
maxRowsRow cap to protect memory. Default 20000.
maxPairChecksComparison budget. Default 2,000,000.

Fields are auto-detected from common names: placeId, title or name, latitude/longitude or lat/lng or location.lat/location.lng, address, phone, website, categoryName, reviewsCount. Use fieldMapping if yours differ.

Example input

{
"items": [
{"placeId": "a1", "title": "Blue Door Bakery", "location": {"lat": 40.7128, "lng": -74.006}},
{"title": "The Blue Door Bakery", "location": {"lat": 40.71283, "lng": -74.00601}}
],
"coordinateToleranceMeters": 75
}

Output

One dataset item per duplicate group:

  • groupId, decision (auto_merge or needs_review), memberCount
  • evidence: rules that matched, such as same_place_id or nearby_coordinates_similar_title
  • conflicts: for example same_place_id_different_title, differing_phone, member_spread_large
  • keepRowIndex and members (zero-based rowIndex into your input, title similarity and distance to the keep row)
  • suggestedMerge and filledFields (which row each filled value came from)

A SUMMARY record in the key-value store holds row counts, group counts, the estimated row count after auto-merge, and warnings.

Rows without any title or place ID are skipped and counted. Rows with missing or invalid coordinates (including 0,0) are matched without location, which lowers confidence.

Pricing

The code emits one pay-per-event charge named duplicate-group-reviewed for each duplicate group saved. Current pay-per-event prices are shown in the Store Pricing tab. Invalid input and failed runs save nothing and charge nothing. Runs that find no duplicates charge nothing.

Limitations and caveats

  • Results are heuristics, not ground truth. Always review needs_review groups, and spot-check auto_merge groups before deleting anything.
  • Quality depends on your data. Sparse rows (title only) give weak evidence, and very small datasets say little about how the rules behave on yours. No accuracy figure is claimed here.
  • Two different businesses at the same address with similar names (for example clinics in one building) can be wrongly flagged. Two entries of the same business with very different names or far-apart coordinates will be missed.
  • Titles in non-Latin scripts are compared as plain text without transliteration or word segmentation, so matching is less reliable.
  • Longitudes near ±180° are not matched across the date line.
  • If the comparison budget is reached, the summary says so and some duplicates may be missing. Very large clusters of identical titles are only partly compared.
  • Source data must be lawfully obtained by you. Respect the terms and privacy rules that apply to it.

Local checks

python -m unittest discover -s tests runs the offline tests.