Használati útmutató
Ez a dokumentáció a Központi Statisztikai Hivatal (KSH) által szolgáltatott Nagyértékű adatkészletek programozott eléréséhez (API) szükséges technikai információkat tartalmaz. Az API lehetővé teszi az aktuális és archív statisztikai adatok elérését géppel olvasható, nyitott formátumokban.
Jelenleg nem engedélyezett az API elérése kliens oldali webalkalmazásokból (CORS Policy által blokkolva).
Hozzáférési URL
Az API bázis URL-je: https://data.ksh.hu/
Hitelesítés
A hozzáférés nem igényel hitelesítést.
Kérés formátuma és végpontok
A részletes specifikáció szabványos OpenAPI leírás formájában érhető el, melyet megtekinthet böngészőben vagy elérhet géppel olvasható formában.
Felhasználási feltételek
Automatizált lekérdezések esetén kérjük, a rendszer erőforrásainak védelme érdekében körültekintően járjon el, elkerülve a túlzott terhelést és a túlhasználatot.
Licenc
Az API használatával Ön elfogadja a KSH szerzői jogi szabályzatát, amely elérhető a következő címen: www.ksh.hu/copyright.
További információk
Ha kérdése van, vegye fel velünk a kapcsolatot a következő címen: www.ksh.hu/kapcsolat
Minta kód programozott hozzáféréshez
Ebben a szakaszban egy adatletöltéshez készített mintaprogramot teszünk közzé. A forráskód NodeJS futtatókörnyezetben használható.
01. Az adatkészletek listájának letöltése
async function listDatasets() {
const res = await fetch('https://data.ksh.hu/datasets.json');
if (!res.ok) throw new Error(`datasets.json letöltési hiba: HTTP ${res.status} ${res.statusText}`);
const datasetsJson = await res.text();
let datasets;
try {
datasets = JSON.parse(datasetsJson);
} catch {
throw new Error('A datasets.json válasz nem értelmezhető JSON-ként.');
}
if (!Array.isArray(datasets) || datasets.length === 0) {
throw new Error('A datasets.json nem tartalmaz feldolgozható dataset listát.');
}
return datasets;
}
02. Egy adatkészlet metaadatainak letöltése
import { XMLParser } from 'fast-xml-parser';
const XML = new XMLParser({
removeNSPrefix: true,
ignoreAttributes: false,
textNodeName: 'text',
attributeNamePrefix: '',
});
async function fetchDatasetMetadataRdfAsJson(datasetId) {
const res = await fetch(`https://data.ksh.hu/datasets/${encodeURIComponent(datasetId)}/metadata.rdf`);
if (!res.ok) {
throw new Error(`metadata.rdf letöltési hiba: HTTP ${res.status} ${res.statusText}`);
}
const rdfXml = await res.text();
let rdfJson;
try {
rdfJson = XML.parse(rdfXml);
} catch {
throw new Error('A metadata.rdf válasz nem értelmezhető érvényes XML-ként.');
}
return rdfJson;
}
03. Adatkészlet SDMX adatsémájának és adatállományának letöltése
import { createWriteStream } from 'node:fs';
import { pipeline } from 'node:stream/promises';
import { Readable } from 'node:stream';
const rdfJson = await fetchDatasetMetadataRdfAsJson('XXXX');
const distributionContainer = rdfJson.RDF.Dataset.distribution;
const distributions = (Array.isArray(distributionContainer) ? distributionContainer : [distributionContainer])
.map(x => x.Distribution);
for (const dist of distributions) {
const SdmxSchemaURL = dist.conformsTo.resource;
const SdmxDataURL = dist.downloadURL;
// séma letöltés
const schemaRes = await fetch(SdmxSchemaURL);
if (!schemaRes.ok) {
throw new Error(`Séma letöltési hiba: HTTP ${schemaRes.status} ${schemaRes.statusText}`);
}
const schemaText = await schemaRes.text();
// XML vagy JSON schema feldolgozása...
// ...
// adatok letöltése
const dataRes = await fetch(SdmxDataURL);
if (!dataRes.ok) throw new Error(`Letöltési hiba: HTTP ${dataRes.status} ${dataRes.statusText}`);
// mentés pl. fájlba.
await pipeline(Readable.fromWeb(dataRes.body), createWriteStream('data.csv'));
}