Files
TAX-ID_and_VAT-ID_finder-API/server.js
2025-07-06 23:08:25 +00:00

70 lines
2.0 KiB
JavaScript

// Node.js API server to fetch and merge Slovak company data by IČO
// from two Finančná správa SR API endpoints with 404-safe handling
const express = require("express");
const axios = require("axios");
const app = express();
const PORT = 3000;
// Insert your API key below
const API_KEY = "2t5lK487ces7Rc4oEHrIwCjB5DpoZUBChQxCLBiSrwGNdEubKpraAtQLEiJmPXkdjNw5FssYpuO0LXSZpk3U6oqePyFaIGHokg4WNPEM0302X2BK4iXpkFv9Qg7jyeUXh50bWVExVrVSBuOnOQpBzzdJ1k1D54b115MD3y5ticWxvGDLUaqLQgA6nzFgbYOx6dR0ToJUxU714TetLBZCBy0xKSnBaOrxYv10I1gZ1q4rQx4Q8k7BTR6MaP";
// Safe fetch wrapper to handle 404 as empty result
async function fetchSafe(url) {
try {
const res = await axios.get(url, {
headers: {
accept: "application/json",
key: API_KEY
}
});
return res.data?.data || [];
} catch (err) {
if (err.response?.status === 404) {
return []; // return empty list if not found
}
throw err;
}
}
// API endpoint: /api/lookup?ico=XXXXXXXX
app.get("/api/lookup", async (req, res) => {
const ico = req.query.ico;
if (!ico) {
return res.status(400).json({ error: "Missing ICO parameter" });
}
const endpoints = [
`https://iz.opendata.financnasprava.sk/api/data/ds_dsrdp/search?page=1&column=ico&search=${ico}`,
`https://iz.opendata.financnasprava.sk/api/data/ds_dphs/search?page=1&column=ico&search=${ico}`
];
try {
const [data1, data2] = await Promise.all([
fetchSafe(endpoints[0]),
fetchSafe(endpoints[1])
]);
const merged = [...data1, ...data2].filter(
(item, index, self) =>
index === self.findIndex((t) =>
JSON.stringify(t) === JSON.stringify(item)
)
);
res.json({
source1_count: data1.length,
source2_count: data2.length,
merged_count: merged.length,
data: merged
});
} catch (error) {
res.status(500).json({ error: error.message });
}
});
app.listen(PORT, () => {
console.log(`API server running at http://localhost:${PORT}`);
});