The GPRbase catalogue is exposed as JSON. The API is read-only, open to everyone, requires no key or registration, and allows calls straight from a browser.

Endpoints

Two addresses are enough. Responses are cached for one hour.

Full catalogue

GET https://www.gprbase.com/api/datasets.json

Returns every dataset with its metadata, along with the total count and the generation timestamp.

A single dataset

GET https://www.gprbase.com/api/datasets/{id}.json

The same fields, plus a ready-made citation in APA and BibTeX formats. Identifier matching is case-insensitive.

/api/datasets/ds016.json

Dataset fields

Each catalogue entry carries the following fields. More may be added: ignore what you do not recognise rather than validating strictly.

Field Type Description
id string Stable identifier, for example ds016. Never reused.
title / title_fr string English and French titles.
description / description_fr string Bilingual descriptions. Line breaks and paragraphs are preserved.
applications array Canonical application keys. A dataset may belong to several domains.
antenna string One or several antennas, separated by a semicolon.
frequency_mhz string Single value, dual-frequency such as 300/800, or several values separated by a semicolon.
format string Native file format, usually DZT.
dataType string Always raw: no processing is applied to the data.
fileCount integer | null Number of files in the package, when recorded.
targets array What the survey was looking for.
channels integer | null Number of channels recorded simultaneously. 2 for a dual-frequency antenna or two antennas. Null when not recorded.
gpsAvailable boolean | null Are the .DZG positioning files included? Null when unknown — an empty field does not mean “no”.
groundTruth string Ground truth level: verified, partial or none. A dataset with no documented validation is none.
groundTruthMethod string | null Validation method, when known: coring, trial trench, bibliography, direct observation.
contributor string Who acquired the data in the field.
datePublished string | null Publication date in ISO 8601 format.
license string Always CC BY-NC-SA 4.0.
status string Dataset visibility. Only public datasets are freely accessible.
isAccessibleForFree boolean True when the dataset is freely accessible.
url / url_fr string | null Canonical page addresses, English and French. Null for a non-public dataset.

Application keys

Values are returned in canonical form, whatever was entered originally.

  • betonConcrete / Civil Eng.
  • reseauxUnderground Utilities
  • geotechGeotechnics
  • routesRoads / Pavements
  • archeologieArchaeology
  • geosciencesGeosciences

Antenna and frequency are strings, not arrays: split them yourself, or use the client, which does it for you.

Ground truth

Most freely available GPR datasets say nothing about their validation. GPRbase states it explicitly, because the difference between a plausible interpretation and a confirmed target is decisive when evaluating an algorithm.

verified The target was confirmed by a means independent of the radar.
partial Some targets are confirmed, or the context is documented without direct verification.
none No documented validation. This applies to most of the catalogue.

These datasets are not evaluation benchmarks: they carry no annotations, masks or bounding boxes. Check this field before any use in validation or comparison.

Citations

The single-dataset endpoint returns a formatted citation. The author is the publishing organisation; the field team, when external, is credited separately as the acquisition contributor.

What the API does not do

  • No write access. The catalogue is maintained through a separate administration interface.
  • No download links. The API returns the dataset page address; access to the files goes through the request form.
  • No server-side search. Fetch the catalogue once and filter locally: the collection is small.

Python and JavaScript client

An official client, dependency-free and MIT licensed, handles filtering, splitting of multi-value fields and citation generation.

from gprbase import GPRbase

gpr = GPRbase()
for d in gpr.datasets(application="beton", frequency="2500"):
    print(d.id, d.title, d.url)

GitHub   DOI 10.5281/zenodo.22010033

Good practice

  • Fetch the catalogue once rather than one dataset at a time.
  • Identify your tool with a User-Agent header. There is no rate limit, but it helps when something goes wrong.
  • Ignore fields you do not recognise: new ones may appear without notice.

Licence and citation

The metadata returned by this API may be reused freely, including to build a catalogue or a search tool. The datasets themselves remain under CC BY-NC-SA 4.0: attribution required, no commercial use without separate authorisation, derivatives under the same terms.

Xavier, J. (2026). GPRBase: A Free Library of Real-World Ground Penetrating Radar Datasets for Education, Training and Research. https://doi.org/10.5281/zenodo.21894932

Questions

For any question or correction: info@gprbase.com