Skip to content

Instantly share code, notes, and snippets.

@knudmoeller
Last active March 2, 2026 23:02
Show Gist options
  • Select an option

  • Save knudmoeller/fefc5c468b063044dcd324e5acf601ff to your computer and use it in GitHub Desktop.

Select an option

Save knudmoeller/fefc5c468b063044dcd324e5acf601ff to your computer and use it in GitHub Desktop.
CKAN Queries

CKAN-Queries via package_search

Allgemein

Grundsätzlich bekommt man gepagete JSON-Reponses zurück (Default für Page-Größe ist 10):

$ export API="https://datenregister.berlin.de/api/action"
$ curl -s "$API/package_search?q=wohnungen"
{
  "help": "https://datenregister.berlin.de/api/3/action/help_show?name=package_search",
  "success": true,
  "result": {
    "count": 30,
    "facets": {},
    "results": [
      {
        "author": "Senatsverwaltung für Stadtentwicklung, Bauen und Wohnen Berlin",
        "author_email": null,
...
    ],
    "sort": "score desc, metadata_modified desc",
    "search_facets": {}
  }
}

results enthält JSON-Objekte der gefundenen Datensätze, jeweils mit den kompletten Metadaten.

Pagen

Page-Größe mit rows, Offset mit start.

$ curl -s "$API/package_search?q=wohnungen" | jq -r ".result.results[].name" 
wohnatlas-berlin-umgewandelte-wohnungen-pro-1-000-wohnungen-wfs-45ecaad4
wohnatlas-berlin-umgewandelte-wohnungen-pro-1-000-wohnungen-wms-b5f3559a
...
wohnatlas-berlin-anteil-stadtischer-wohnungsbaugesellschaften-am-wohnungsbestand-wfs-237b148b
wohnatlas-berlin-anteil-stadtischer-wohnungsbaugesellschaften-am-wohnungsbestand-wms-c42ff2d6

$ curl -s "$API/package_search?q=wohnungen&start=10" | jq -r ".result.results[].name"
wohnungsbestand-der-landeseigenen-wohnungsunternehmen-wms-f97597ac
wohnungsbestand-der-landeseigenen-wohnungsunternehmen-wfs-4c4e0115
...
wohnatlas-berlin-anteil-einwohner-mit-mind-5-jahriger-wohndauer-wfs-8ee56c73
wohnatlas-berlin-angebotsmieten-in-eur-m-monatlich-netto-kalt-wms-d454fbae

$ curl -s "$API/package_search?q=wohnungen&start=20" | jq -r ".result.results[].name"
wohnatlas-berlin-veranderung-der-anzahl-der-leistungsempfanger-nach-sgb-ii-wms-e093b2dc
wohnatlas-berlin-prozentuale-veranderungen-der-einwohnerzahlen-5-jahreszeitraum-wms-47d55af3
...
monitoring-soziale-stadtentwicklung-mss-2023-wfs-078ba40c
monitoring-soziale-stadtentwicklung-mss-2023-wms-44194f08

Suchbegriff auf bestimmte Felder einschränken

q=wohnungen (Suchbegriff in irgendeinem Feld, 30 Ergebnisse) vs. q=title:wohnungen (Suchbegriff im Titel, 8 Ergebnisse)

$ export API="https://datenregister.berlin.de/api/action"
$ curl -s "$API/package_search?q=wohnungen" | jq ".result.count" 
30
$ curl -s "$API/package_search?q=title:wohnungen" | jq ".result.count”
8

Welche Felder gibt es?

Für die Default-CKAN-Felder siehe hier: https://github.com/ckan/ckan/blob/f2d47c8f87bc5f224ebff93b23d0f6fda8fb81b4/ckan/config/solr/schema.solr8.xml#L102

Für extras wie geographical_coverage sagt man extras_geographical_coverage:

$ curl -s "$API/package_search?q=extras_geographical_coverage:tegel" | jq -r ".result.results[].name"
berlin-txl-grundwassermessstellen
berlin-txl-gebaudedaten-bestand-planung-3d-und-planung-3d

Welche Extras gibt es?

s. https://github.com/berlinonline/ckanext-berlin_dataset_schema/blob/c72ba1591d210d1da9083625de71b14ed2b7e697/ckanext/berlin_dataset_schema/plugin.py#L156

Wildcards

q=title:zugriff (genaues Token zugriff im Titel, 0 Ergebnisse) vs. q=title:zugriff* (beliebiges Token, das mit zugriff beginnt im Titel, 2 Ergebnisse).

$ curl -s "$API/package_search?q=title:zugriff" | jq -r ".result.results[].name"
$ curl -s "$API/package_search?q=title:zugriff*" | jq -r ".result.results[].name"
zugriffsstatistik-daten-berlin-de
zugriffsstatistik-daten-berlin-de-historisch

Boolsche Operatoren

q=title:wohn* AND res_format:WMS (alle WMSe mit Vorsilbe "Wohn" im Titel)

$ curl -s "$API/package_search?q=title:wohn*+AND+res_format:WMS" | jq ".result.count"
31

q=title:wohn* OR res_format:WMS (alle Datensätze, die die Vorsilbe "Wohn" im Titel haben oder WMSe sind)

$ curl -s "$API/package_search?q=title:wohn*+OR+res_format:WMS" | jq ".result.count"
808

Begriffe ausschließen

q=title:wohn* AND -res_format:WMS (alle Datensätze, die die Vorsilbe "Wohn" im Titel haben und keine WMSe sind)

curl -s "$API/package_search?q=title:wohn*+AND+-res_format:WMS" | jq ".result.count"
62
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment