Photon Geocoder Scraper avatar

Photon Geocoder Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Photon Geocoder Scraper

Photon Geocoder Scraper

Resolve any place name or address into precise coordinates with Photon by komoot on OpenStreetMap, and reverse lookup coordinates into the nearest place. Returns latitude, longitude, street, postcode, city, country, and a map link. Handy for logistics, lead enrichment, and mapping apps.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

ParseForge Banner

🌍 Photon Geocoder Scraper

🚀 Turn place names into coordinates and coordinates into addresses in one run. Powered by Photon by komoot on top of OpenStreetMap, with no API key required.

🕒 Last updated: 2026-06-04 · 📊 25 fields per record · Global coverage · Forward and reverse geocoding

Photon Geocoder Scraper takes any text query such as "Brandenburg Gate, Berlin" and returns ranked matching locations with latitude, longitude, full address parts, OSM identifiers, and a ready map link. It also works in reverse, turning a latitude and longitude pair into the nearest named place or address.

Coverage is worldwide because Photon indexes the global OpenStreetMap dataset. You can geocode landmarks, streets, house numbers, cities, regions, and countries, and read back structured fields like postcode, district, county, state, country, and country code whenever the underlying OSM object provides them.

🎯 Target Audience💡 Primary Use Cases
Data engineers and analystsEnrich address lists with coordinates
Logistics and delivery teamsValidate and standardize delivery points
Travel and mapping buildersPower search boxes and place autocomplete
Marketers and sales opsGeocode leads for territory planning
Researchers and journalistsMap locations from open data

📋 What the Photon Geocoder Scraper does

  • Forward geocoding: text query to one or more matching locations with coordinates.
  • Reverse geocoding: a latitude and longitude pair to the nearest place or address.
  • Returns clean structured address parts: name, street, house number, postcode, locality, district, city, county, state, country, and country code.
  • Adds a composed displayName, an OpenStreetMap mapUrl, the bounding box extent, and the raw OSM identifiers osmId and osmType.
  • Auto-detects mode from your input, so you never pick a mode manually.
  • Language preference for result names where translations exist.

🎬 Full Demo (🚧 Coming soon)

⚙️ Input

FieldKeyTypeDescription
Search QueryquerystringPlace name or address for forward geocoding.
Result LanguagelanguagestringPreferred name language. One of en, de, fr, it, es.
LatitudelatitudestringLatitude for reverse geocoding.
LongitudelongitudestringLongitude for reverse geocoding.
Max ItemsmaxItemsintegerMaximum locations returned. Free plan caps at 10.

Forward geocoding example:

{
"query": "Brandenburg Gate, Berlin",
"language": "en",
"maxItems": 10
}

Reverse geocoding example:

{
"latitude": "52.5162699",
"longitude": "13.3777034",
"language": "en",
"maxItems": 5
}

⚠️ Good to Know: Provide a Search Query for forward mode, or both Latitude and Longitude for reverse mode. If a query and coordinates are both present, forward geocoding takes priority. Address parts such as house number, postcode, or state appear only when the matched OpenStreetMap object actually carries them, so a city result will not include a house number while a building result will.

📊 Output

Each record includes the following fields.

FieldKeyDescription
🧭 Query ModequeryMode"forward" or "reverse".
🔎 QueryqueryThe query or coordinate pair you sent.
📍 Display NamedisplayNameReadable composed address line.
🏷 NamenamePrimary place or feature name.
🧭 LatitudelatitudeLatitude of the location.
🧭 LongitudelongitudeLongitude of the location.
🗂 CategorycategoryOSM key, for example place or tourism.
🗂 Category DetailcategoryDetailOSM value, for example city or attraction.
🏷 TypetypePhoton result type, for example house or city.
🏠 House NumberhouseNumberStreet number when available.
🛣 StreetstreetStreet name when available.
✉️ PostcodepostcodePostal code when available.
🏘 LocalitylocalityLocality or neighborhood when available.
🗺 DistrictdistrictDistrict when available.
🏙 CitycityCity when available.
🗺 CountycountyCounty when available.
🗺 StatestateState or region when available.
🌍 CountrycountryCountry name when available.
🌐 Country CodecountryCodeTwo letter country code when available.
🆔 OSM IDosmIdOpenStreetMap object identifier.
🔠 OSM TypeosmTypeOpenStreetMap object type, N, W, or R.
📐 ExtentextentBounding box as four coordinates when available.
🔗 Map URLmapUrlOpenStreetMap link centered on the location.
🕒 Scraped AtscrapedAtTimestamp of the run.
❌ ErrorerrorNull on success, a message on failure.

Real sample records from a live run:

{
"queryMode": "forward",
"query": "Pariser Platz 1, Berlin",
"displayName": "Brandenburg Gate Pariser Platz 1, 10117, Berlin, Mitte, Germany",
"name": "Brandenburg Gate",
"latitude": 52.5162699,
"longitude": 13.3777034,
"category": "tourism",
"categoryDetail": "attraction",
"type": "house",
"houseNumber": "1",
"street": "Pariser Platz",
"postcode": "10117",
"locality": "Friedrich-Wilhelm-Stadt",
"district": "Mitte",
"city": "Berlin",
"county": null,
"state": null,
"country": "Germany",
"countryCode": "DE",
"osmId": 518071791,
"osmType": "W",
"extent": [13.3775798, 52.5164328, 13.3778251, 52.516117],
"mapUrl": "https://www.openstreetmap.org/?mlat=52.5162699&mlon=13.3777034#map=17/52.5162699/13.3777034",
"scrapedAt": "2026-06-04T19:34:49.669Z",
"error": null
}
{
"queryMode": "forward",
"query": "Berlin",
"displayName": "Berlin, Germany",
"name": "Berlin",
"latitude": 52.5173885,
"longitude": 13.3951309,
"category": "place",
"categoryDetail": "city",
"type": "city",
"houseNumber": null,
"street": null,
"postcode": null,
"locality": null,
"district": null,
"city": null,
"county": null,
"state": null,
"country": "Germany",
"countryCode": "DE",
"osmId": 62422,
"osmType": "R",
"extent": [13.088345, 52.6755087, 13.7611609, 52.3382448],
"mapUrl": "https://www.openstreetmap.org/?mlat=52.5173885&mlon=13.3951309#map=17/52.5173885/13.3951309",
"scrapedAt": "2026-06-04T19:34:21.967Z",
"error": null
}
{
"queryMode": "forward",
"query": "Berlin",
"displayName": "Berlin, 03570, New Hampshire, United States",
"name": "Berlin",
"latitude": 44.4696602,
"longitude": -71.1810703,
"category": "place",
"categoryDetail": "city",
"type": "city",
"houseNumber": null,
"street": null,
"postcode": "03570",
"locality": null,
"district": null,
"city": null,
"county": "Coos",
"state": "New Hampshire",
"country": "United States",
"countryCode": "US",
"osmId": 170184,
"osmType": "R",
"extent": [-71.397858, 44.528436, -71.123642, 44.445057],
"mapUrl": "https://www.openstreetmap.org/?mlat=44.4696602&mlon=-71.1810703#map=17/44.4696602/-71.1810703",
"scrapedAt": "2026-06-04T19:34:22.050Z",
"error": null
}

✨ Why choose this Actor

  • No API key and no account on the source side. Photon is open and keyless.
  • Two modes in one tool. Forward and reverse are auto-detected from your input.
  • Global reach from the OpenStreetMap dataset, from landmarks to whole countries.
  • Clean and predictable records with a composed display name and a map link.
  • Honest fields. Address parts appear only when the matched object carries them, never padded with fake values.

📈 How it compares to alternatives

ApproachCoverageKey requiredReverse modeStructured address parts
Photon Geocoder ScraperGlobal OSMNoYesYes
Paid geocoding APIsGlobalUsually yesYesYes, with quotas and billing
Manual map lookupsManualNoManualCopy by hand
Single endpoint scriptsVariesVariesOften forward onlyOften raw, unmapped

🚀 How to use

  1. Create a free Apify account using this sign-up link.
  2. Open the Photon Geocoder Scraper in Apify Console.
  3. Enter a Search Query for forward geocoding, or a Latitude and Longitude pair for reverse geocoding.
  4. Set Max Items and an optional result language, then click Start.
  5. Watch the run finish and browse or connect the results to your own systems.

💼 Business use cases

Logistics and delivery

NeedHow this helps
Standardize delivery pointsConvert customer addresses to precise coordinates.
Validate new stopsConfirm a place exists and read back its parts.

Sales and marketing operations

NeedHow this helps
Territory planningGeocode leads to assign regions by state or county.
List enrichmentAdd coordinates and country codes to contact lists.

Product and engineering

NeedHow this helps
Search and autocompleteBack a place search box with ranked matches.
Map featuresPin results using the included map link and extent.

Research and analytics

NeedHow this helps
Spatial datasetsBuild location tables from open address text.
Reverse lookupsLabel scattered coordinate samples with place names.

🔌 Automating Photon Geocoder Scraper

Connect runs to the tools you already use:

  • Make and Zapier to trigger geocoding from new rows or form entries.
  • Slack to post a summary when a batch finishes.
  • Airbyte to sync results into a warehouse.
  • GitHub Actions to schedule recurring enrichment jobs.
  • Google Drive to archive result snapshots for your team.

🌟 Beyond business use cases

  • Research: map study sites and survey points from text descriptions.
  • Personal: plan trips by resolving landmark names into map pins.
  • Non-profit: geocode service locations for community resource maps.
  • Experimentation: prototype geocoding features without paid quotas.

🤖 Ask an AI assistant

Paste a result into your assistant of choice and ask for the next step:

Example prompt: "Here is a geocoding result with latitude, longitude, and address parts. Group these places by country and country code and summarize the coverage."

❓ Frequently Asked Questions

Do I need an API key for Photon? No. Photon by komoot is keyless and open, so you only need your Apify account.

What is the difference between forward and reverse geocoding? Forward turns a place name or address into coordinates. Reverse turns a coordinate pair into the nearest named place or address.

How do I choose the mode? You do not. The mode is auto-detected. A Search Query runs forward, a Latitude and Longitude pair runs reverse.

What happens if I send both a query and coordinates? Forward geocoding takes priority and the coordinates are ignored for that run.

Why are some address fields empty? Address parts like house number, postcode, or state appear only when the matched OpenStreetMap object actually carries them. A country or city result will not include a house number.

How many results can I get per query? Up to your Max Items value. Free plans are capped at 10 results per run.

Which languages are supported for names? English, German, French, Italian, and Spanish where the underlying data provides translated names.

Is the data accurate and current? Results come from OpenStreetMap through Photon, so accuracy reflects community OSM data, which is broad and frequently updated.

Can I geocode many addresses at once? Each run resolves a single query. Use an automation platform to loop over a list and trigger one run per address.

What is the map link for? The mapUrl opens OpenStreetMap centered on the location, which is handy for quick visual checks.

What does the extent field mean? It is the bounding box of the feature as four coordinates, useful for zooming a map to fit the place.

Is this affiliated with komoot or OpenStreetMap? No. This is an independent tool that queries the public Photon service. See the disclaimer below.

🔌 Integrate with any app

Results are available through the Apify API and webhooks, so you can pull records into spreadsheets, databases, dashboards, or any service that speaks HTTP.

💡 Pro Tip: browse the complete ParseForge collection.

🆘 Need Help? Open our contact form

⚠️ Disclaimer: independent tool, not affiliated with komoot, Photon, or OpenStreetMap. Only publicly available data is collected.