API
The public read-only API provides published place and category data as JSON and GeoJSON. It is intended for church information services, research and responsible integrations.
GET Single pilgrimage site
Read the complete published record for a place by its stable URL slug.
JSON
https://pilgrimap.org/api/v1/places/gnadenkapelle-altoetting?lang=nliFrame
<iframe src="https://pilgrimap.org/embed/place/gnadenkapelle-altoetting?lang=nl" loading="lazy" title="Gnadenkapelle Altötting"></iframe>GET Search
Search by name, locality, postal code, region, alternative names and category.
JSON
https://pilgrimap.org/api/v1/search?q=Altötting&limit=20&lang=nliFrame
<iframe src="https://pilgrimap.org/embed/search?q=Altötting&lang=nl" loading="lazy" title="Pilgrimage sites in Altötting"></iframe>GET Categories
Active catalogue values with icon, marker colour and filter link.
JSON
https://pilgrimap.org/api/v1/categories?lang=nliFrame
<iframe src="https://pilgrimap.org/embed/categories?lang=nl" loading="lazy" title="Pilgrimap categories"></iframe>GET Map and GeoJSON
GeoJSON for custom maps or a ready-made embedded map view.
JSON / GeoJSON
https://pilgrimap.org/api/v1/geojson?category=marienheiligtum&lang=nliFrame
<iframe src="https://pilgrimap.org/embed/map?place=gnadenkapelle-altoetting&lang=nl" loading="lazy" title="Bedevaartskaart"></iframe>More endpoints
| JSON | iFrame equivalent | Purpose |
|---|---|---|
/api/v1/meta | /embed/docs | Version, scope and documentation link |
/api/v1/places | /embed/places | Filtered and sorted list |
/api/v1/places/<slug> | /embed/place/<slug> | Complete single place |
/api/v1/search?q=… | /embed/search?q=… | Full-text search |
/api/v1/categories | /embed/categories | Active categories |
/api/v1/geojson | /embed/map | Records as GeoJSON or map |
/api/v1/places/<slug>/geojson | /embed/map?place=<slug> | One place as GeoJSON or map focus |
/api/v1/nearby?lat=48.1&lng=11.5 | /embed/nearby?lat=48.1&lng=11.5 | Places within a radius |
/api/v1/random | /embed/random | Random published place |
/api/v1/languages | – | Active languages and text direction |
/api/v1/places/featured | /embed/places | Featured places |
/api/v1/places/recent | /embed/places | Recently updated places |
/api/v1/places/<slug>/translations | – | Available place translations |
/api/v1/stats | – | Public catalogue totals |
/api/v1/openapi.json | – | OpenAPI 3.1 |
Filters for /api/v1/places
| Parameter | Description |
|---|---|
q | Full-text search |
category | Category slug, for example marienheiligtum |
locality | Locality or district |
country | ISO country code, for example DE |
region | Region or state |
featured | true/false – featured places |
has_images | true/false – places with images |
updated_since | ISO-8601 timestamp |
bbox | Bounding box: west,south,east,north |
page, per_page | Page number and at most 100 records per page |
sort, order | name, locality or updated; asc/desc |
lang | Language code, for example de, fr or it |
JavaScript example
fetch('https://pilgrimap.org/api/v1/search?q=Kevelaer&lang=nl')
.then(response => response.json())
.then(result => console.log(result.data));
Python example
import requests
response = requests.get(
'https://pilgrimap.org/api/v1/nearby',
params={'lat': 48.13, 'lng': 11.58, 'radius_km': 100, 'lang': 'nl'},
timeout=10,
)
response.raise_for_status()
places = response.json()['data']
JSON endpoints allow browser-side GET requests through CORS. API and iFrame requests are counted only in a separate technical API statistic and are not mixed with visitor analytics.