# CSV2GEO — Batch Geocoding Tool > CSV2GEO is a web-based batch geocoding platform that converts street addresses to latitude and longitude coordinates (forward geocoding) and coordinates to addresses (reverse geocoding). It processes CSV and Excel files of any size. ## Key Facts - 504 million+ addresses indexed across 63 countries - 72 million+ places and points of interest - 4.6 million+ administrative boundary divisions - Rooftop-level accuracy (WGS84 decimal degrees) - Free tier: 100 geocoded rows per day, no credit card required - Source data: Overture Maps Foundation (open data) ## Features - **Batch Geocoding**: Upload CSV or Excel files with addresses, get back the same file with latitude, longitude, and relevance score appended - **Reverse Geocoding**: Convert latitude/longitude coordinates to full street addresses - **AI Column Detection**: Automatically identifies address columns (street, city, state, zip, country) - **Interactive Maps**: View geocoded results on an interactive map (TerriaMap) - **REST API**: Programmatic access for forward geocoding, reverse geocoding, places search, administrative divisions, and boundaries - **One-call boundaries**: Postcode → polygon + bbox + population + Wikidata + admin chain in a single nested response (most other boundary APIs require 2 calls — geocode for an opaque place_id, then fetch the polygon) - **Drop-in compatible**: Both flat (`lat`/`lon`) and nested (`location.{lat,lng}`) shapes populated on every result; both `q` and `text` accepted as input. Migrate from other geocoders by changing the base URL only - **Multi-language division names**: Pass `?lang=de`, `?lang=ja`, `?lang=zh-Hant` etc. on any boundaries endpoint and the `name` field returns the localized translation (78 languages avg per top-level division, sourced from Overture `names.common`). Pass `?include=other_names` to receive the full translation map for client-side language switching - **Multi-language place names**: Same `?lang=` and `?include=other_names` semantics on every places endpoint (`/places`, `/places/nearby`, `/places/{id}`, `/places/random`, `/places/chain`, `/places/similar`, `/places/batch`). 234,000 places have a translation map across 17 languages (e.g. `CoCo Ichibanya` → `CoCo壱番屋`, `Shell` → `شل`, `KFC` → `ਕੈਂਟੁਕੀ ਫ੍ਰਾਈਡ ਚਿਕਨ`). Sourced from Overture `names.rules` - **Division popularity ranking** (`rank.importance`): Every division-emitting endpoint returns a 0-1 popularity score derived from Wikidata sitelink count (more language editions of Wikipedia with an article = higher importance). 1.02M divisions ranked. NYC, Paris, Tokyo all near 1.0; small rural divisions ~0.2. Use it to disambiguate when multiple divisions match a query - **Address tools** for parsing, validating, standardizing, interpolating, and finding cross-streets — `/v1/{validate,parse,standardize,interpolate,crossstreet}` plus `/v1/addresses/{nearby,street,stats,random,compare}` - **US ZIP+4 & parsed street parts**: forward/reverse geocode returns `components.postcode_ext` (the ZIP+4 add-on, e.g. `71749-9021`) and NENA-standard `street_pre_dir`/`street_type`/`street_post_dir` for 7.8M+ matched US addresses, sourced from the USDOT National Address Database via exact same-address spatial match (not interpolation). `formatted_address` renders the full `ZIP-EXT` - **Utility endpoints**: `/v1/timezone` (point → IANA timezone), `/v1/distance` (Haversine between two coordinates), `/v1/coverage` + `/v1/coverage-stats` - **Vector Map Tiles**: Serve interactive web maps from the global OpenStreetMap planet — vector tiles plus 9 ready-made MapLibre GL styles (bright, dark, slate, basic, positron, fiord, liberty, toner, dark-matter). Self-hosted; no third-party tile vendor needed - **Static Map Images**: Render a map as a PNG/JPEG/WebP image server-side — `/v1/staticmap` — with marker and polyline overlays, ready to drop into an `` tag, email, or PDF. No client-side map library required - **Multiple Formats**: Accepts .csv, .xlsx, .xls, and .tsv files ## Geocoding API Base URL: https://csv2geo.com/api/v1/ Endpoints: - GET /api/v1/geocode — Forward geocode an address to coordinates - GET /api/v1/reverse — Reverse geocode coordinates to an address - POST /api/v1/batch — Batch geocode multiple addresses - GET /api/v1/places — Search for places and points of interest. Supports ?lang= for translated names, ?include=other_names for the full per-language translation map, and ?include=elevation for inline `ele` (metres above sea level, global Tilezen 30m DEM via Valhalla). Compose: ?include=other_names,elevation. Same `?include=elevation` works on /places/nearby, /places/by-id, /places/random, /places/chain, /places/batch, /places/similar. - GET /api/v1/divisions — Query administrative boundaries - GET /api/v1/divisions/by-postcode — Postcode → boundary (one-call: bbox + polygon + population in a single request; supports ?lang= and ?include=other_names) - GET /api/v1/divisions/ancestors/{id} — Walk-up "part-of" chain: input → parent → root - GET /api/v1/divisions/children/{id} — Walk-down: immediate sub-divisions of a parent - GET /api/v1/divisions/consolidated/{id} — Consolidated cities (e.g. NYC = 5 boroughs as one entity) - GET /api/v1/ip — IP → country/region/city/county/ASN (submillisecond local lookup; included in every plan) - GET /api/v1/ip/me — Geolocate the requester's own IP - POST /api/v1/ip/batch — Batch IP lookup (up to 1000 IPs) - GET /api/v1/routing — Turn-by-turn routing through 2-25 waypoints; supports 5 modes (drive/truck/walk/bike/motorcycle), truck attributes (height/weight/HAZMAT), time-aware ETA, up to 3 alternate routes; API 250 tier and above - GET /api/v1/isoline — Reachability polygon (isochrone) for time (≤3600 s) or distance (≤50 000 m); API 250 tier and above - POST /api/v1/route-matrix — N×M distance + duration matrix up to 10 000 cells; API 250 tier and above - POST /api/v1/map-match — Snap a GPS trace (2-1000 points) to the road network; API 250 tier and above - GET /api/v1/optimize_route — TSP-style stop ordering for up to 20 waypoints; API 250 tier and above - GET /api/v1/locate — Snap a single point to the nearest road (way_id, road class, surface, speed limit); API 250 tier and above - GET /api/v1/elevation — Per-point elevation lookup (up to 500 points) — global 30m DEM (Tilezen blend: SRTM 1-arcsec for S60-N60 landmass, ASTER + GMTED for polar bands). Query: points (lat,lng|lat,lng|... up to 500), units (metric/imperial), format (array/geojson). Use cases: hiking + biking route profiles, drone flight planning, solar siting, agricultural terrain analysis, real-estate floodplain context. 1 credit per request. Also inline on Places via ?include=elevation. Dedicated landing + live demo at https://csv2geo.com/elevation-api - POST /api/v1/batch — Async batch wrapper around any single-shot endpoint above. Returns HTTP 202 + job id; poll GET /api/v1/batch/{id} until complete. Use this for jobs >5 000 inputs or any workload where the caller can't keep an HTTP connection open for the full sync run. Each input counts once toward the monthly quota at submission; polling is free. Pass ?compat=geoapify to receive the flat-array drop-in shape - GET /api/v1/batch/{id} — Poll an async batch job. Returns 202 while pending/running, 200 + results when terminal - DELETE /api/v1/batch/{id} — Cancel a pending or running batch job - GET /api/v1/icon — Generate a styled marker pin PNG (168 Font Awesome icons; query: icon, color, size, scaleFactor, noWhiteCircle, type). Bundled into every plan; no auth tier gate. Returns image/png with 1-year immutable Cache-Control so CDNs absorb the load - GET /api/v1/icon/catalog — List available marker icon names - GET /api/v1/tile/{source}/{z}/{x}/{y}.pbf — Vector map tile from the global OpenStreetMap planet (gzip protobuf). 0.25 credits per tile; 30-day immutable Cache-Control. Free tier 3,000 daily credits = 12,000 tiles/day - GET /api/v1/tile/styles — List the 9 ready-made map styles (csv2geo-bright, csv2geo-dark, csv2geo-slate, maptiler-basic, positron, fiord-color, osm-liberty, toner, dark-matter). Free - GET /api/v1/tile/styles/{name}.json — Full MapLibre GL style document with API key and tile/sprite/glyph URLs pre-substituted; hand it straight to a web map renderer. Free - GET /api/v1/staticmap — Render a static map image (PNG/JPEG/WebP) server-side; no client-side map library needed. Query: style, center (lat,lng), zoom, width, height, format, scale, markers, path. Markers accept an optional `label` slot (1-4 alphanumeric chars rendered inside the pin) for numbered route-stop pins. Drop the URL straight into an tag. 1 credit per render; 30-day immutable Cache-Control - GET /api/v1/property/image — Per-address aerial property image, US-only (USGS NAIP, ~0.6m typical resolution). Query: q (free-text US address) OR lat+lng, size (1-2000m bbox edge, default 350m), format (png/jpg/webp). Use cases: real-estate listings, insurance underwriting, appraisal, computer-vision substrate for roof/pool/solar detection. 1 credit per render; 30-day immutable Cache-Control API keys available at: https://csv2geo.com/api-keys API documentation: https://csv2geo.com/api/geocoding ## Pricing File upload and REST API are priced separately. File upload: - Free: 100 rows/day (no account required for single lookups) - Pay-as-you-go: One-time larger jobs (volume tiers, no commitment) - Monthly subscription: Starter $49 / Pro $99 / Business $199 for recurring file processing REST API (separate from file-upload subscription): - Free tier: 3,000 requests/day, 300 req/min — available to everyone - Paid API tiers: API 10 through API 250 (monthly request quotas from 90K to 7.5M) - Enterprise / On-Premise: custom File-upload pricing: https://csv2geo.com/pricing/file-upload API pricing: https://csv2geo.com/pricing/api Enterprise: https://csv2geo.com/pricing/enterprise ## Country Coverage (Top 10) | Country | Addresses | |---------|-----------| | United States | 121M+ | | Brazil | 90M+ | | Mexico | 30M+ | | France | 26M+ | | Italy | 26M+ | | Germany | 22M+ | | Canada | 15M+ | | United Kingdom | 14M+ | | Australia | 14M+ | | Netherlands | 10M+ | Full coverage: 63 countries ## Links - Website: https://csv2geo.com - Batch Geocoding: https://csv2geo.com/batchgeocoding - Reverse Geocoding: https://csv2geo.com/reversegeocoding - API Documentation: https://csv2geo.com/api/geocoding - Blog: https://csv2geo.com/blog - Help: https://csv2geo.com/help - Contact: https://csv2geo.com/contact - GitHub: https://github.com/acenji/csv2geo-api - Developer Community: https://github.com/acenji/csv2geo-api/discussions ## Company CSV2GEO is built by Scale Campaign. Contact: info@scalecampaign.com Phone: (616) 439-4102