GIS Format Converter: Shapefile, GeoJSON, KML, GPX, WKT & CSV
Pricing
from $2.50 / 1,000 dataset converteds
GIS Format Converter: Shapefile, GeoJSON, KML, GPX, WKT & CSV
Convert vector GIS data between Shapefile, GeoJSON, KML, KMZ, GPX, WKT and CSV, with optional EPSG reprojection. Deterministic, no GDAL, no scraping.
Pricing
from $2.50 / 1,000 dataset converteds
Rating
0.0
(0)
Developer
Simon Fletcher
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Share
What does GIS Format Converter do?
GIS Format Converter converts vector geospatial data between the formats GIS teams actually
use — Shapefile (.zip), GeoJSON, KML, KMZ, GPX, WKT and
CSV-with-geometry — and can optionally reproject coordinates from one EPSG CRS to
another (for example WGS84 4326 → Web Mercator 3857, or → British National Grid 27700).
It runs entirely on data you supply (URL, uploaded file, inline text, or base64) — it does
not scrape any website, needs no login, and touches no personal data.
Because it runs on the Apify platform, you get an HTTP API,
scheduling, integrations (Make, Zapier, n8n), and MCP access
for AI agents — turning a fiddly command-line ogr2ogr step into a callable cloud endpoint.
The engine is pure Python (shapely + pyproj + pyshp), so conversions are deterministic and
there is no GDAL install to babysit.
Why use GIS Format Converter?
- Interoperability: move data between tools that each demand a different format — QGIS, Google Earth, Garmin/Strava (GPX), PostGIS (WKT), spreadsheets (CSV), web maps (GeoJSON).
- Reprojection on the fly: get coordinates in the CRS your map or database expects without opening a desktop GIS.
- Automation & AI agents: call it from a pipeline or an LLM agent to normalize incoming geodata to one canonical format (usually GeoJSON) before further processing.
- No-toolchain conversion: no GDAL, no local installs, no CLI — just JSON in, structured JSON + a downloadable file out.
How to use GIS Format Converter
- Open the Input tab.
- Provide your data one of four ways: paste inline text (GeoJSON/KML/GPX/WKT/CSV), add a
file URL, upload a file (passed via a key-value-store key), or send base64 for
binary inputs (Shapefile
.zip, KMZ). - Choose a Target format (e.g.
geojson). - (Optional) set a Target CRS (EPSG code) to reproject; set the Source CRS if the input's own CRS is unknown or missing.
- Click Start. Each converted file appears as one row in the Output dataset, and the converted file itself is saved to the run's key-value store for download.
Input
| Field | Type | Description |
|---|---|---|
targetFormat | string | Output format: geojson, kml, kmz, gpx, wkt, csv, shapefile. |
fileUrls | array | Public URLs of GIS files to download and convert. |
keyValueStoreKeys | array | Keys of uploaded files in the run's key-value store. |
inlineData | array | Inline text payloads (GeoJSON/KML/GPX/WKT/CSV). |
base64Data | array | Base64 payloads for binary inputs (Shapefile .zip, KMZ). |
sourceFormat | string | Force the input format (else auto-detected). |
sourceEpsg | integer | EPSG code of the input coordinates (else read from the file or 4326). |
targetEpsg | integer | EPSG code to reproject the output to (blank = no reprojection). |
coordinatePrecision | integer | Decimal places for output coordinates (default 6). |
geometryColumn / latColumn / lonColumn / csvDelimiter | string | CSV parsing hints. |
Input example
{"targetFormat": "geojson","inlineData": ["POINT (-0.1276 51.5074)\nPOINT (2.3522 48.8566)"],"targetEpsg": 3857,"coordinatePrecision": 2}
Output
Each input file becomes one dataset item. You can download the dataset as JSON, CSV, Excel
or HTML, and each converted file is also saved to the key-value store (see
output.keyValueStoreKey).
{"source": "inlineData[0]","status": "ok","sourceFormat": "wkt","targetFormat": "geojson","featureCount": 2,"geometryTypes": ["Point"],"sourceCrs": "EPSG:4326","targetCrs": "EPSG:3857","reprojected": true,"bbox": [-14204.37, 6250564.35, 261845.71, 6711542.48],"output": {"format": "geojson","filename": "converted.geojson","encoding": "text","content": "{\"type\":\"FeatureCollection\", ...}","byteSize": 214,"keyValueStoreKey": "output-0-converted.geojson"},"features": [{ "geometry": { "type": "Point", "coordinates": [-14204.37, 6711542.48] }, "properties": {} },{ "geometry": { "type": "Point", "coordinates": [261845.71, 6250564.35] }, "properties": {} }],"meta": { "engine": "shapely+pyproj+pyshp", "coordinatePrecision": 2, "detectedSourceEpsg": null }}
Output fields
| Field | Description |
|---|---|
source | Which input this record came from. |
status | ok or error. |
sourceFormat / targetFormat | Formats converted from/to. |
featureCount | Number of vector features converted (billed only when > 0). |
geometryTypes | Distinct geometry types (Point, LineString, Polygon, …). |
sourceCrs / targetCrs | Input/output CRS as EPSG:<code>. |
reprojected | Whether coordinates were transformed. |
bbox | [minX, minY, maxX, maxY] in the target CRS. |
output | The converted file (content + downloadable key-value-store key). |
features | Normalized GeoJSON features — an agent-friendly structured view. |
Supported conversions
Any listed source format converts to any listed target format. GPX output supports Point and LineString geometries; Shapefile output requires a single geometry family per file (all points, all lines, or all polygons) per the shapefile specification.
| Shapefile | GeoJSON | KML | KMZ | GPX | WKT | CSV | |
|---|---|---|---|---|---|---|---|
| In | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| Out | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Pricing / cost estimation
This Actor uses pay-per-event: you are charged once per non-empty converted file
(featureCount > 0). Empty or failed inputs are never billed, and the run honors any
max-charge cap you set. Compute per file is tiny (well under a second of work), so cost is driven
by the per-result event, not by CPU time. See the Console pricing tab for the current rate.
Tips & advanced options
- Batch many files in one run (multiple
fileUrls/inlineDataentries) to amortize container startup. - CRS not in the file? Set
sourceEpsgexplicitly — KML/GPX are always WGS84 (4326); Shapefiles carry a.prj; GeoJSON defaults to4326per RFC 7946. - Protect precision: raise
coordinatePrecisionfor projected/metric CRSs where you need sub-metre accuracy. - CSV geometry: the Actor auto-detects a WKT column (
wkt/geometry/geom) or latitude/longitude columns; override withgeometryColumn/latColumn/lonColumn.
FAQ, disclaimers & support
- Does it scrape anything? No. It only transforms data you provide. No login, no PII.
- Do I need GDAL/ogr2ogr? No. The engine is pure Python and self-contained.
- What about 3D/Z coordinates and .gml/.gpkg? The current version converts 2D X/Y vector geometry across the seven listed formats; GeoPackage/GML are not yet supported.
- Found a bug or need another format? Open the Issues tab on the Actor page — custom format/CRS support can be added on request.