BYTETOOLS

data.public.lu API

Free Luxembourg open data API with no key: national datasets on the uData platform, with descriptions in French, German and English and rich per-dataset quality metrics. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 21 Aug 2026

What is the data.public.lu API?

data.public.lu is Luxembourg's national open data portal, running the open-source uData platform with a free, key-free REST API. It serves national and municipal datasets with multilingual descriptions and per-dataset quality scoring, using page-based pagination rather than CKAN's row offsets.

uData is the platform behind France's data.gouv.fr, and Luxembourg runs the same software, so anything you write here ports directly. The API is conventionally REST rather than CKAN's action-call style: `/api/1/datasets/` lists, `/api/1/datasets/{id}/` fetches one, and results arrive under a `data` key with `page`, `page_size` and `next_page` alongside. That is a friendlier shape than `package_search`, and the OpenAPI specification is published, so clients can be generated rather than hand-written.

Luxembourg's own flavour shows in the content. Descriptions are frequently long-form and multilingual — the CFL Mobility record documents its entire column layout in French inside the description field — reflecting a country that operates in French, German and Luxembourgish with English as a working language. The catalogue is small compared to its neighbours but skews practical: transport, geodata, environment and administrative registers rather than bulk statistical dumps. Every record also carries `archived`, `deleted` and `badges`, so you can filter out retired datasets that a plain search would otherwise return.

Quick facts

Base URL
https://data.public.lu/api/1
Authentication
No API key for reads. An API key is only needed to publish or modify datasets, which requires a portal account.
Rate limit
No published limit. Page sizes are capped by the platform.
Pricing
Free. Most datasets are CC BY or CC0; check the licence field on each record.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the data.public.lu API

Every request below was executed against the live API on 21 Aug 2026, and the response shown is the real body it returned — not an illustration.

1. List Luxembourg open datasets

GET https://data.public.lu/api/1/datasets/?page_size=1

curl
curl 'https://data.public.lu/api/1/datasets/?page_size=1'
JavaScript (fetch)
const res = await fetch("https://data.public.lu/api/1/datasets/?page_size=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://data.public.lu/api/1/datasets/?page_size=1", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200 (truncated)
{
  "data": [
    {
      "acronym": "CFL Mobility",
      "archived": null,
      "badges": [],
      "contact_point": null,
      "created_at": "2024-09-10T13:50:33.451000+00:00",
      "deleted": null,
      "description": "L’objectif premier est ici de fournir la liste des véhicules FLEX disponibles et de décrire la dernière station connue par véhicule. \n\nLes champs repris dans ce documents sont les suivants:\n\n- car_type\t\t: Type de voiture\t\t(Ex.: Small Car, Transporter, …)\n- fuel_type\t\t: Type de carburant\t\t(Ex.:Diesel, Electric, Super petrol)\n- available\t\t: Disponibilité de la voiture\t(TRUE)\n- brand_name\t\t: Marque de voiture\t\t(Ex.:Audi, BMW, VW, Mini, …)\n- model_name\t\t: Modèle de voiture\t\n- station_name\t\t: Nom de la station\t\n- station_town\t\t: Ville/village de la station\t\n- station_zipcode\t\t: Code postal de la station\t\n- station_street\t\t: Rue de la station\t\n- station_streetnumber\t: N° de rue de la station\t\n- station_latitude\t: Point GPS Latitude\t\n- station_longitude\t: Point GPS Longitude\t\n- createdDate\t\t: Date et heure de création du fichier\t\n\nLes coordonnées GPS montrent la position exacte de la station, l'adresse peut différer de la position réelle.",
      "extras": {},
      "frequency": "continuous",
      "frequency_date": null,
      "harvest": null,
      "id": "66e03289744a07b26071baab",
      "internal": {
        "created_at_internal": "2024-09-10T13:50:33.451000+00:00",
        "last_modified_internal": "2026-08-21T07:55:22.116000+00:00"
      },
      "last_modified": "2026-08-21T07:55:22.116000+00:00"

Parameters

ParameterTypeRequiredDescription
page_sizequeryOptionalDatasets per page. 1
pagequeryOptionalPage number, one-based. 2
qqueryOptionalFree-text search across titles and descriptions. mobilité
organizationqueryOptionalFilter by publishing organisation ID. cfl
tagqueryOptionalFilter by tag. transport
sortqueryOptionalSort key, prefixed with `-` for descending. -created

Response fields

dataarray
The datasets. uData wraps results in `data`, not CKAN's `result.results`.
data[].title / descriptionstring
Title and a long-form description, often documenting the file's column layout in French.
data[].acronymstring
Short name where the publisher supplied one.
data[].archived / deletedstring or null
Non-null marks a retired dataset. Filter these out before displaying results.
data[].badgesarray
Portal quality markers, such as designation as a reference dataset.
data[].created_atstring
ISO 8601 with a UTC offset, unlike CKAN's naive timestamps.
data[].extrasobject
Publisher-supplied extension fields; frequently empty.
page / page_size / next_pageinteger and string
Page-based pagination — increment `page`, do not compute offsets.

What you can build with the data.public.lu API

  • Search Luxembourg transport and geodata programmatically
  • Reuse a data.gouv.fr client against a second uData portal
  • Filter out archived datasets before showing search results
  • Harvest Luxembourg metadata into a cross-border catalogue

Common errors and how to fix them

404 on /api/3/action/...

This is uData, not CKAN.

Fix: Use `/api/1/datasets/`. CKAN action-style paths do not exist on this platform.

Retired datasets in results

Archived and deleted records are returned by default.

Fix: Filter client-side on `archived` and `deleted` being null.

Pagination misses records

`page` is one-based and page-oriented.

Fix: Increment `page` by one per request; there is no offset parameter to compute.

Description renders as a wall of text

Publishers document column layouts inside the description.

Fix: Render it as pre-formatted text, or truncate to the first paragraph for list views.

data.public.lu API — frequently asked questions

Is the data.public.lu API free?

Yes. Reads need no key. An API key is required only to create or modify datasets, which needs a portal account.

Is this the same API as data.gouv.fr?

Effectively yes — both run uData, so the `/api/1/` routes, response envelope and pagination are identical. A client written for one works against the other by changing the hostname.

What languages is the metadata in?

Mostly French, with German and English appearing depending on the publisher. Luxembourg operates multilingually, so do not assume any single language is always populated.

How do I avoid showing withdrawn datasets?

Check `archived` and `deleted` on each record — the API returns them alongside live datasets, and only filters them if you ask. Both being null means the dataset is current.

Tools that pair with this API

Alternatives to data.public.lu API

If data.public.lu does not fit, these government & open data apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
Federal RegisterFree US Federal Register API with no key: executive orders, rules, notices and proposed regulations with full text search back to 1994. Tested curl example.No keyYes19 Aug 2026
USAspendingFree US federal spending API with no key: agency budgets, contracts, grants and award data covering trillions in government spending. Tested curl example.No keyNo19 Aug 2026
UK Parliament MembersFree UK Parliament Members API with no key: MPs and Lords, constituencies, party affiliation, contact details and voting records. Tested curl example.No keyNo19 Aug 2026
UK Police DataFree UK Police API with no key: street-level crime data, police forces, neighbourhood teams and stop-and-search records by location and month. Tested example.No keyYes19 Aug 2026
data.gov.myFree Malaysian government data API with no key: weekly fuel prices, CPI, trade and dozens of national indicators as flat JSON arrays. Tested curl example and live response.No keyYes21 Aug 2026
NASA POWERFree NASA POWER API with no key: solar irradiance, temperature, wind and humidity data for any coordinates, daily or hourly, back to 1981. Tested example.No keyNo19 Aug 2026
All Government & Open Data APIs

data.public.lu is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 21 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.