Maps Duplicate Places Audit and Merge Review
Pricing
from $2.00 / 1,000 duplicate group revieweds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Security
Limited permissionsShare
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_mergeorneeds_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
| Field | Meaning |
|---|---|
datasetId | An existing dataset ID. Takes priority over items. |
items | Inline JSON rows (the prefilled sample works as is). |
coordinateToleranceMeters | Maximum distance for a location match. Default 75. |
minTitleSimilarity | Minimum title score for a candidate. Default 0.85. |
autoMergeTitleSimilarity | Score at or above which a nearby match is auto_merge. Default 0.95. |
fieldMapping | Optional field-name overrides, for example {"title": "businessName", "latitude": "gps.lat"}. |
maxRows | Row cap to protect memory. Default 20000. |
maxPairChecks | Comparison 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_mergeorneeds_review),memberCountevidence: rules that matched, such assame_place_idornearby_coordinates_similar_titleconflicts: for examplesame_place_id_different_title,differing_phone,member_spread_largekeepRowIndexandmembers(zero-basedrowIndexinto your input, title similarity and distance to the keep row)suggestedMergeandfilledFields(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_reviewgroups, and spot-checkauto_mergegroups 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.