Getting Started
From sign-up to a working geocoding request in about 5 minutes. No SDK required - just a REST call with your API key.
Create your account
Start with a free account - no credit card required for the trial period.
Create your free account →An activation email is sent immediately. Follow the link to confirm your address - check your spam folder if it doesn't arrive within a few minutes.
Get your API key
Every request is authenticated with a single HTTP header:
X-Api-Key: YOUR_KEYFind your key in the API Keys section of your dashboard. You can also pass the key as a query parameter for quick testing:
?key=YOUR_KEYAdvanced plans support multiple keys - for example, separate keys for development and production, or individual keys per customer.
Make your first geocoding request
Forward geocoding converts an address or place name to coordinates. Replace YOUR_KEY with your actual key:
curl "https://api.pickpoint.io/v2/geocode/forward?q=Eiffel+Tower" \
-H "X-Api-Key: YOUR_KEY"You'll get a GeoJSON FeatureCollection response:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [2.2944813, 48.8583701]
},
"properties": {
"display_name": "Eiffel Tower, Champ de Mars, Paris, France",
"place_id": "node/5013364969",
"address": {
"name": "Eiffel Tower",
"road": "Champ de Mars",
"city": "Paris",
"country": "France",
"country_code": "fr"
}
}
}
]
}Key fields: geometry.coordinates is [longitude, latitude] (GeoJSON order), and properties.address gives structured components ready to store or display.
Try the other APIs
The same key works for all four APIs:
curl "https://api.pickpoint.io/v2/geocode/reverse?lat=48.858&lon=2.294" \
-H "X-Api-Key: YOUR_KEY"curl "https://api.pickpoint.io/v2/address/search?q=Eiff" \
-H "X-Api-Key: YOUR_KEY"curl -X POST "https://api.pickpoint.io/v2/route" \
-H "X-Api-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"locations":[{"lat":48.858,"lon":2.294},{"lat":48.873,"lon":2.295}],"costing":"auto"}'Explore in Geo Lab
Geo Lab is an interactive playground inside your dashboard. Build any request visually - geocoding, routing, address search, or device tracking - and see the results plotted on a live map alongside the raw JSON and a copy-ready code snippet.
Useful for exploring parameters before writing integration code: try the routing playground ↗ to see vehicle profiles, multi-stop optimization, and time windows in action.
Integrate into your app
The API is standard REST - any HTTP client works. Here's the same geocoding request in JavaScript:
const res = await fetch(
'https://api.pickpoint.io/v2/geocode/forward?q=Eiffel+Tower',
{ headers: { 'X-Api-Key': process.env.PICKPOINT_KEY } }
);
const { features } = await res.json();
const [lon, lat] = features[0].geometry.coordinates;
console.log(lat, lon); // 48.8583701, 2.2944813See the Node.js backend example for a complete proxy implementation, or the web map tutorials for browser integration.
How the APIs fit together
Each API is independent - you can use just geocoding, or just routing - but they're designed to compose. A typical delivery application uses all four: geocoding normalizes customer addresses when they're entered; routing builds the optimal multi-stop delivery order; address search powers the input fields in your UI; device tracking shows the courier's live position to dispatcher and customer alike.
Things consistent across every API
- One key. The same
X-Api-Keyheader authenticates all four APIs. No per-API keys, no per-feature billing tiers. - Plain JSON by default. Geocoding returns JSON with named
latandlonstring fields. Addformat=geojsonfor a GeoJSONFeatureCollection. - OpenStreetMap data. Geocoding and routing run on OSM, updated continuously. Global coverage, no licensing restrictions on storing results.
- Never expose your key in the browser. Route API calls through your backend - a leaked key can drain your quota within minutes. See the Backend Examples.
GEO LAB
GEO LAB is an interactive playground inside your dashboard. Build any request visually, execute it, see results on a live map, and copy the generated snippet in cURL, JavaScript, Ruby, or Python. Use it to explore parameters before writing integration code.