Quick Start
curl -X POST \
-H "X-API-Key: YOUR_API_KEY" \
-F "file=@input.shp.zip" \
"https://gistools-production.up.railway.app/convert?output_format=geojson" \
-o output.geojsonThat's it. Upload a file, get it converted. Supports 13+ GIS formats including File Geodatabase.
Authentication
All API requests require the X-API-Key header.
X-API-Key: gis_xxxxxxxxxxxxx
The API is free to use. No authentication required for basic conversions. For higher limits, include an API key from your dashboard.
Base URL: https://gistools-production.up.railway.app
Endpoints
POST
/convertConvert a GIS file to another format.
Parameters
| output_format | Query param. Target format (see below) |
| file | Multipart form file upload |
Supported Formats
shapefilegeojsongeodatabasekmlkmzgpxgmlgpkgdxfmapinfocsvsqliteflatgeobuf
POST
/analyzeGet metadata about a GIS file without converting it.
Response
{
"feature_count": 1234,
"geometry_type": ["Polygon"],
"crs": "EPSG:4326",
"bounds": [-122.5, 37.5, -122.0, 38.0],
"attributes": ["name", "population", "area"],
"file_size_bytes": 524288
}GET
/formatsList all supported input and output formats.
Usage
The API is completely free. No credits, no limits on conversions, no paywalls. Files up to 500MB are supported.
Code Examples
cURL
# Convert shapefile to GeoJSON
curl -X POST \
-H "X-API-Key: gis_your_api_key_here" \
-F "file=@parcels.shp.zip" \
"https://gistools-production.up.railway.app/convert?output_format=geojson" \
-o parcels.geojson
# Analyze a file
curl -X POST \
-H "X-API-Key: gis_your_api_key_here" \
-F "file=@data.gpkg" \
"https://gistools-production.up.railway.app/analyze"Python
import requests
API_KEY = "gis_your_api_key_here"
BASE_URL = "https://gistools-production.up.railway.app"
def convert_file(input_path, output_format):
"""Convert a GIS file to another format."""
with open(input_path, "rb") as f:
response = requests.post(
f"{BASE_URL}/convert",
params={"output_format": output_format},
headers={"X-API-Key": API_KEY},
files={"file": f}
)
response.raise_for_status()
return response.content
# Usage
geojson_data = convert_file("parcels.shp.zip", "geojson")
with open("parcels.geojson", "wb") as f:
f.write(geojson_data)JavaScript (Node.js)
const fs = require('fs');
const FormData = require('form-data');
const API_KEY = 'gis_your_api_key_here';
const BASE_URL = 'https://gistools-production.up.railway.app';
async function convertFile(inputPath, outputFormat) {
const form = new FormData();
form.append('file', fs.createReadStream(inputPath));
const response = await fetch(
`${BASE_URL}/convert?output_format=${outputFormat}`,
{
method: 'POST',
headers: { 'X-API-Key': API_KEY },
body: form
}
);
return response.arrayBuffer();
}
// Usage
const geojson = await convertFile('data.kml', 'geojson');Rate Limits
| Category | Conversions/Month | Max File Size | API Access |
|---|---|---|---|
| Default | Flexible | Up to 5GB | ✓ |
Ready to integrate?
The API is free. Start converting files right now.
Try the converter