EuroMakers
  • Software
  • Lanceringer
  • Journal
  • Annoncér
Indsend
  • Software
  • Lanceringer
  • Journal
  • Annoncér
MandagsoverblikOm os
Indsend dit produkt

API

Et gratis JSON-API, kun til læsning, for det offentliggjorte katalog. Ingen nøgle nødvendig.

Kom i gang

Alle produkter i kataloget, i én forespørgsel:

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

Hvilken skal jeg bruge?

  • Snapshot-filer: gratis, kan læses fra ethvert website, bygges igen hver nat, ingen grænser. Til browsere og opgaver med hele kataloget.
  • Live-API: til din server, cirka 60 forespørgsler i minuttet pr. IP-adresse. Til ét produkt ad gangen og friskere data.

Snapshot-filer

Det offentliggjorte katalog som statiske JSON-filer, bygget igen hver nat. Kun ændrede filer skrives igen, og ingen af dem tæller med i en grænse.

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

Et array af produkter, sorteret efter kategori-id og derefter id. Samme 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

Et array af landenavne, hvert én gang, i katalogets rækkefølge (ikke sorteret). Samme JSON som GET /api/software/countries.

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

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

Et objekt fra kategori-id til antal produkter. Kategorier uden produkter udelades. Samme JSON som GET /api/categories/counts.

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

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

Kendte værktøjer, hver med id’erne på produkterne til det samme arbejde, som på værktøjssiderne.

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

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

Hvornår filerne blev lavet, hvor mange elementer hver har, deres størrelse og SHA-256 samt vilkårene.

{
  "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": "…"
    },
    "…"
  ]
}

Fra en webside:

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

Endpoints

Hvert endpoint svarer på GET med JSON. Eksempelsvarene er ægte, men forkortede.

GET /api/software

Et array af produkter, sorteret efter kategori-id og derefter id.

Parametre

Ingen

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

429 · 500 · 503

Cache

Gemmes ved edge i op til 24 timer og ryddes, når kataloget ændres. s-maxage=86400

GET /api/software/{id}

Ét produkt. Et ukendt eller ikke-offentliggjort id giver en 404.

Parametre
  • id · string · path · påkrævetProduktets id: små bogstaver, tal og bindestreger. ^[a-z0-9-]{1,80}$
Eksempel
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"
}
Fejl

404 · 429 · 500

Cache

Gemmes ved edge i op til 24 timer og ryddes, når kataloget ændres. s-maxage=86400

GET /api/software/countries

Et array af landenavne, hvert én gang, i katalogets rækkefølge (ikke sorteret).

Parametre

Ingen

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

429 · 500 · 503

Cache

Gemmes ved edge i op til 24 timer og ryddes, når kataloget ændres. s-maxage=86400

GET /api/categories/counts

Et objekt fra kategori-id til antal produkter. Kategorier uden produkter udelades.

Parametre

Ingen

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

429 · 500 · 503

Cache

Gemmes ved edge i op til 24 timer og ryddes, når kataloget ændres. s-maxage=86400

Et produkt

Hvert produkt har disse felter. Valgfrie felter udelades, når de er tomme.

id · string
Fast id, også slutningen af adressen på produktsiden.
name · string
Produktnavn.
description · string
Beskrivelse i én sætning.
audience · string[]
Hvem det er til: b2b, individual eller begge.
country · string
Oprindelsesland.
website · uri
Produktets website.
longDescription · string
Et par afsnit om produktet.
features · string[]
Vigtigste funktioner.
useCases · string[]
Et til fire id’er for anvendelser.
category · string
Kategori-id, som i /categories/{id}.
verified · boolean
valgfrit · true, når skaberen har bekræftet ejerskabet; ellers mangler feltet.
logoUrl · uri
valgfrit · Logo (PNG, JPEG eller WebP); mangler, når der ikke er et.

Det samme 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[];
}

Fejl

Fejl er JSON med en besked, en fast kode og et tip:

{
  "code": "not_found",
  "error": "Software not found",
  "hint": "List known ids with GET /api/software, then retry with an existing kebab-case id."
}
StatusKodeHvornår
404not_foundUkendt id, eller intet endpoint på den sti.
429rate_limitedOver grænsen for forespørgsler.
500internal_errorNoget gik galt hos os.
503catalog_unavailableKataloget kunne ikke indlæses.

Grænser for forespørgsler

60 forespørgsler pr. 60 sekunder pr. IP-adresse, delt af alle endpoints, svar fra cachen medregnet. Over grænsen får du en 429 med headerne Retry-After (i sekunder) og X-RateLimit-Limit. Når API’et som helhed har meget travlt, kan det svare 429, før du når din grænse.

Rimelig brug: har du brug for mere, så brug snapshot-filerne.

Betingede forespørgsler

Hvert svar har et ETag. Send det tilbage i If-None-Match, så er et uændret svar en 304 uden indhold.

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

CORS

Live-API’et sender ingen CORS-headere, så en browser på et andet website kan ikke læse det. I en browser bruger du snapshot-filerne: ethvert website må læse dem.

Versioner

Dette er version 1 af API’et og snapshot-filerne. Vi tilføjer kun: ingen sti, intet felt og ingen type ændres eller forsvinder. En inkompatibel ændring ville komme som en ny version ved siden af denne.

Brug og kildeangivelse

API’et er gratis til al brug. Link til EuroMakers, hvor du viser dets data. Logoer tilhører deres skabere, og kataloget må ikke videresælges i bulk.

Vilkår for brug

Maskinlæsbart

  • /openapi.json · OpenAPI 3.1-beskrivelse af hvert endpoint
  • /llms.txt · Opsummering af sitet til sprogmodeller
  • https://data.euromakers.org/v1/manifest.json · Hvornår filerne blev lavet, hvor mange elementer hver har, deres størrelse og SHA-256 samt vilkårene.
EuroMakers

Hjemmet for europæisk software.

Udforsk

  • Al software
  • Efter værktøj
  • Lanceringer
  • Kort

Fællesskab

  • Journal
  • Mandagsoverblik
  • Dit feed

For skabere

  • Indsend dit produkt
  • Gør krav på din side
  • Annoncér
  • Optagelseskriterier

EuroMakers

  • Om os
  • Kontakt
  • API
  • Privatliv
  • Vilkår
Se kortet →

© 2026 EuroMakers. Lavet med overbevisning i Europa. Produktlogoer tilhører deres skabere.

Sprog: Dansk
  • 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