EuroMakers
  • Mjukvara
  • Lanseringar
  • Journal
  • Annonsera
Skicka in
  • Mjukvara
  • Lanseringar
  • Journal
  • Annonsera
MåndagsbrevetOm oss
Skicka in din produkt

API

Ett gratis JSON-API, bara för läsning, för den publicerade katalogen. Ingen nyckel behövs.

Kom igång

Alla produkter i katalogen, i en enda förfrågan:

curl https://www.euromakers.org/api/software
[
  {
    "id": "proton-mail",
    "name": "Proton Mail",
    "description": "End-to-end encrypted email from Switzerland.",
    …
  },
  …
]

Vilken ska jag använda?

  • Snapshot-filer: gratis, läsbara från alla webbplatser, byggs om varje natt, inga gränser. För webbläsare och jobb med hela katalogen.
  • Live-API: för din server, ungefär 60 anrop i minuten per IP-adress. För en produkt i taget och färskare data.

Snapshot-filer

Den publicerade katalogen som statiska JSON-filer, ombyggda varje natt. Bara ändrade filer skrivs om, och ingen av dem räknas mot en gräns.

https://data.euromakers.org/v1/software.json

En array med produkter, sorterade efter kategori-id och sedan id. Samma JSON som GET /api/software.

[
  {
    "id": "proton-mail",
    "name": "Proton Mail",
    "description": "End-to-end encrypted email from Switzerland.",
    …
  },
  …
]

https://data.euromakers.org/v1/countries.json

En array med landsnamn, vart och ett en gång, i katalogens ordning (osorterad). Samma JSON som GET /api/software/countries.

["Germany", "France", "Slovakia", "…"]

https://data.euromakers.org/v1/categories.json

Ett objekt från kategori-id till antal produkter. Kategorier utan produkter utelämnas. Samma JSON som GET /api/categories/counts.

{
  "artificial-intelligence": 13,
  "cloud": 16,
  "communication": 14
}

https://data.euromakers.org/v1/alternatives.json

Välkända verktyg, vart och ett med id:n för produkterna gjorda för samma arbete, som på verktygssidorna.

[
  {
    "tool": "slack",
    "name": "Slack",
    "page": "https://www.euromakers.org/alternatives/slack",
    "ids": ["element", "rocket-chat", "…"]
  }
]

https://data.euromakers.org/v1/manifest.json

När filerna skapades, hur många poster var och en har, deras storlek och SHA-256 samt villkoren.

{
  "version": "v1",
  "generatedAt": "2026-11-12T22:05:00.000Z",
  "docs": "https://www.euromakers.org/developers",
  "license": "Free for any use. Logos belong to their makers, and the directory can’t be resold in bulk.",
  "attribution": "Link back to EuroMakers (https://www.euromakers.org) where you show this data.",
  "terms": "https://www.euromakers.org/terms",
  "files": [
    {
      "name": "software.json",
      "url": "https://data.euromakers.org/v1/software.json",
      "items": "…",
      "bytes": "…",
      "sha256": "…"
    },
    "…"
  ]
}

Från en webbsida:

const response = await fetch("https://data.euromakers.org/v1/software.json");
const products = await response.json();

Endpoints

Varje endpoint svarar på GET med JSON. Exempelsvaren är riktiga men förkortade.

GET /api/software

En array med produkter, sorterade efter kategori-id och sedan id.

Parametrar

Inga

Exempel
curl https://www.euromakers.org/api/software
Svar
[
  {
    "id": "proton-mail",
    "name": "Proton Mail",
    "description": "End-to-end encrypted email from Switzerland.",
    …
  },
  …
]
Fel

429 · 500 · 503

Cache

Sparas vid edge i upp till 24 timmar och töms när katalogen ändras. s-maxage=86400

GET /api/software/{id}

En produkt. Ett okänt eller opublicerat id ger en 404.

Parametrar
  • id · string · path · obligatoriskProduktens id: små bokstäver, siffror och bindestreck. ^[a-z0-9-]{1,80}$
Exempel
curl https://www.euromakers.org/api/software/proton-mail
Svar
{
  "id": "proton-mail",
  "name": "Proton Mail",
  "description": "End-to-end encrypted email from Switzerland.",
  "audience": ["b2b", "individual"],
  "country": "Switzerland",
  "website": "https://proton.me/mail",
  "longDescription": "Proton Mail is the flagship encrypted email …",
  "features": ["End-to-end encrypted email", "…"],
  "useCases": ["business-email"],
  "category": "communication"
}
Fel

404 · 429 · 500

Cache

Sparas vid edge i upp till 24 timmar och töms när katalogen ändras. s-maxage=86400

GET /api/software/countries

En array med landsnamn, vart och ett en gång, i katalogens ordning (osorterad).

Parametrar

Inga

Exempel
curl https://www.euromakers.org/api/software/countries
Svar
["Germany", "France", "Slovakia", "…"]
Fel

429 · 500 · 503

Cache

Sparas vid edge i upp till 24 timmar och töms när katalogen ändras. s-maxage=86400

GET /api/categories/counts

Ett objekt från kategori-id till antal produkter. Kategorier utan produkter utelämnas.

Parametrar

Inga

Exempel
curl https://www.euromakers.org/api/categories/counts
Svar
{
  "artificial-intelligence": 13,
  "cloud": 16,
  "communication": 14
}
Fel

429 · 500 · 503

Cache

Sparas vid edge i upp till 24 timmar och töms när katalogen ändras. s-maxage=86400

En produkt

Varje produkt har de här fälten. Valfria fält utelämnas när de är tomma.

id · string
Fast id, också slutet av adressen till produktsidan.
name · string
Produktnamn.
description · string
Beskrivning i en mening.
audience · string[]
Vem den är för: b2b, individual eller båda.
country · string
Ursprungsland.
website · uri
Produktens webbplats.
longDescription · string
Några stycken om produkten.
features · string[]
Viktigaste funktioner.
useCases · string[]
Ett till fyra id:n för användningsområden.
category · string
Kategori-id, som i /categories/{id}.
verified · boolean
valfritt · true när skaparen har verifierat ägandet; saknas annars.
logoUrl · uri
valfritt · Logotyp (PNG, JPEG eller WebP); saknas när det inte finns någon.

Samma sak som TypeScript-typer:

export interface Software {
  /** Stable id, also the end of the product’s page address. */
  id: string;
  /** Product name. */
  name: string;
  /** One-sentence description. */
  description: string;
  /** Who it’s for: b2b, individual or both. */
  audience: ("b2b" | "individual")[];
  /** Country of origin. */
  country: string;
  /** The product’s website. */
  website: string;
  /** A few paragraphs about the product. */
  longDescription: string;
  /** Main features. */
  features: string[];
  /** One to four use-case ids. */
  useCases: string[];
  /** Category id, as in /categories/{id}. */
  category: string;
  /** true when the maker verified ownership; absent otherwise. */
  verified?: true;
  /** Logo (PNG, JPEG or WebP); absent when there is none. */
  logoUrl?: string;
}

/** countries.json, GET /api/software/countries */
export type Countries = string[];

/** categories.json, GET /api/categories/counts */
export type CategoryCounts = Record<string, number>;

/** One entry of alternatives.json */
export interface Alternative {
  tool: string;
  name: string;
  page: string;
  ids: string[];
}

Fel

Fel är JSON med ett meddelande, en fast kod och ett tips:

{
  "code": "not_found",
  "error": "Software not found",
  "hint": "List known ids with GET /api/software, then retry with an existing kebab-case id."
}
StatusKodNär
404not_foundOkänt id, eller ingen endpoint på den sökvägen.
429rate_limitedÖver gränsen för anrop.
500internal_errorNågot gick fel hos oss.
503catalog_unavailableKatalogen kunde inte laddas.

Gränser för anrop

60 anrop per 60 sekunder per IP-adress, delat av alla endpoints, svar från cachen inräknade. Över gränsen får du en 429 med headrarna Retry-After (i sekunder) och X-RateLimit-Limit. När API:et som helhet är mycket belastat kan det svara 429 innan du når din gräns.

Rimlig användning: behöver du mer, använd snapshot-filerna.

Villkorliga anrop

Varje svar har en ETag. Skicka tillbaka den i If-None-Match, så är ett oförändrat svar en 304 utan innehåll.

curl -i https://www.euromakers.org/api/software/proton-mail -H 'If-None-Match: "<ETag of the last answer>"'

CORS

Live-API:et skickar inga CORS-headrar, så en webbläsare på en annan webbplats kan inte läsa det. I en webbläsare använder du snapshot-filerna: alla webbplatser får läsa dem.

Versioner

Det här är version 1 av API:et och snapshot-filerna. Vi lägger bara till: ingen sökväg, inget fält och ingen typ ändras eller försvinner. En inkompatibel ändring skulle komma som en ny version bredvid den här.

Användning och källhänvisning

API:t är gratis för all användning. Länka till EuroMakers där du visar dess data. Logotyperna tillhör sina skapare, och katalogen får inte säljas vidare i bulk.

Användarvillkor

Maskinläsbart

  • /openapi.json · OpenAPI 3.1-beskrivning av varje endpoint
  • /llms.txt · Sammanfattning av webbplatsen för språkmodeller
  • https://data.euromakers.org/v1/manifest.json · När filerna skapades, hur många poster var och en har, deras storlek och SHA-256 samt villkoren.
EuroMakers

Hemmet för europeisk mjukvara.

Upptäck

  • All mjukvara
  • Efter verktyg
  • Lanseringar
  • Karta

Community

  • Journal
  • Måndagsbrevet
  • Ditt flöde

För skapare

  • Skicka in din produkt
  • Gör anspråk på din sida
  • Annonsera
  • Listningskriterier

EuroMakers

  • Om oss
  • Kontakt
  • API
  • Integritet
  • Villkor
Se kartan →

© 2026 EuroMakers. Gjort med övertygelse i Europa. Produktlogotyper tillhör sina skapare.

Språk: Svenska
  • English
  • Български
  • Čeština
  • Dansk
  • Deutsch
  • Ελληνικά
  • Español
  • Eesti
  • Suomi
  • Français
  • Gaeilge
  • Hrvatski
  • Magyar
  • Italiano
  • Lietuvių
  • Latviešu
  • Malti
  • Nederlands
  • Polski
  • Português
  • Română
  • Slovenčina
  • Slovenščina
  • Svenska