EuroMakers
  • Софтуер
  • Премиери
  • Journal
  • Реклама
Добави
  • Софтуер
  • Премиери
  • Journal
  • Реклама
Понеделнишки бюлетинЗа нас
Добави продукта си

API

Безплатен JSON API само за четене на публикувания каталог. Без ключ.

Бърз старт

Всички продукти в каталога с една заявка:

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

Кое да използвам?

  • Файлове със снимка: безплатни, четими от всеки сайт, изграждат се наново всяка нощ, без ограничения. За браузъри и задачи с целия каталог.
  • API на живо: за вашия сървър, около 60 заявки в минута за всеки IP адрес. За един продукт наведнъж и по-пресни данни.

Файлове със снимка

Публикуваният каталог като статични JSON файлове, изграждани наново всяка нощ. Презаписват се само променените файлове и нито един не се брои към ограничение.

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

Масив от продукти, подредени по id на категорията и след това по id. Същият JSON като GET /api/software.

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

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

Масив от имена на държави, всяко по веднъж, в реда на каталога (несортиран). Същият JSON като GET /api/software/countries.

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

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

Обект от id на категория към брой продукти. Категориите без продукти се пропускат. Същият JSON като GET /api/categories/counts.

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

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

Известни инструменти, всеки с ID на продуктите за същата работа, както на страниците на инструментите.

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

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

Кога са създадени файловете, колко елемента има всеки, размерът и SHA-256 им, както и условията.

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

От уеб страница:

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

Крайни точки

Всяка крайна точка отговаря на GET с JSON. Примерните отговори са истински, но съкратени.

GET /api/software

Масив от продукти, подредени по id на категорията и след това по id.

Параметри

Няма

Пример
curl https://www.euromakers.org/api/software
Отговор
[
  {
    "id": "proton-mail",
    "name": "Proton Mail",
    "description": "End-to-end encrypted email from Switzerland.",
    …
  },
  …
]
Грешки

429 · 500 · 503

Кеш

Пази се в края на мрежата до 24 часа и се изчиства, когато каталогът се промени. s-maxage=86400

GET /api/software/{id}

Един продукт. Непознат или непубликуван id връща 404.

Параметри
  • id · string · path · задължителенId на продукта: малки букви, цифри и тирета. ^[a-z0-9-]{1,80}$
Пример
curl https://www.euromakers.org/api/software/proton-mail
Отговор
{
  "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"
}
Грешки

404 · 429 · 500

Кеш

Пази се в края на мрежата до 24 часа и се изчиства, когато каталогът се промени. s-maxage=86400

GET /api/software/countries

Масив от имена на държави, всяко по веднъж, в реда на каталога (несортиран).

Параметри

Няма

Пример
curl https://www.euromakers.org/api/software/countries
Отговор
["Germany", "France", "Slovakia", "…"]
Грешки

429 · 500 · 503

Кеш

Пази се в края на мрежата до 24 часа и се изчиства, когато каталогът се промени. s-maxage=86400

GET /api/categories/counts

Обект от id на категория към брой продукти. Категориите без продукти се пропускат.

Параметри

Няма

Пример
curl https://www.euromakers.org/api/categories/counts
Отговор
{
  "artificial-intelligence": 13,
  "cloud": 16,
  "communication": 14
}
Грешки

429 · 500 · 503

Кеш

Пази се в края на мрежата до 24 часа и се изчиства, когато каталогът се промени. s-maxage=86400

Продукт

Всеки продукт има тези полета. Незадължителните се пропускат, когато са празни.

id · string
Постоянен id, също и краят на адреса на страницата на продукта.
name · string
Име на продукта.
description · string
Описание в едно изречение.
audience · string[]
За кого е: b2b, individual или и двете.
country · string
Държава на произход.
website · uri
Уебсайтът на продукта.
longDescription · string
Няколко абзаца за продукта.
features · string[]
Основни функции.
useCases · string[]
От един до четири id на приложения.
category · string
Id на категорията, както в /categories/{id}.
verified · boolean
незадължително · true, когато създателят е потвърдил собствеността; иначе липсва.
logoUrl · uri
незадължително · Лого (PNG, JPEG или WebP); липсва, когато няма.

Същото като типове на TypeScript:

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

Грешки

Грешките са JSON със съобщение, постоянен код и подсказка:

{
  "code": "not_found",
  "error": "Software not found",
  "hint": "List known ids with GET /api/software, then retry with an existing kebab-case id."
}
СтатусКодКога
404not_foundНепознат id или няма крайна точка на този път.
429rate_limitedОграничението на заявките е надвишено.
500internal_errorНещо се обърка при нас.
503catalog_unavailableКаталогът не можа да се зареди.

Ограничения на заявките

60 заявки за 60 секунди за всеки IP адрес, общо за всички крайни точки, включително отговорите от кеша. Над ограничението получавате 429 със заглавките Retry-After (в секунди) и X-RateLimit-Limit. Когато API-то като цяло е много натоварено, може да отговори с 429, преди да стигнете своето ограничение.

Разумна употреба: ако ви трябва повече, използвайте файловете със снимка.

Условни заявки

Всеки отговор носи ETag. Върнете го в If-None-Match и непромененият отговор е 304 без съдържание.

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

CORS

API-то на живо не изпраща CORS заглавки, така че браузър на друг сайт не може да го прочете. В браузър използвайте файловете със снимка: всеки сайт може да ги чете.

Версии

Това е версия 1 на API-то и на файловете със снимка. Само добавяме: нито път, нито поле, нито тип се променя или изчезва. Несъвместима промяна би дошла като нова версия до тази.

Използване и посочване на източника

API е безплатен за всякаква употреба. Поставете връзка към EuroMakers там, където показвате данните му. Логата принадлежат на създателите си, а каталогът не може да се препродава на едро.

Условия за ползване

За машини

  • /openapi.json · Описание на всяка крайна точка в OpenAPI 3.1
  • /llms.txt · Резюме на сайта за езикови модели
  • https://data.euromakers.org/v1/manifest.json · Кога са създадени файловете, колко елемента има всеки, размерът и SHA-256 им, както и условията.
EuroMakers

Домът на европейския софтуер.

Открий

  • Целият софтуер
  • По инструмент
  • Премиери
  • Карта

Общност

  • Journal
  • Понеделнишки бюлетин
  • Твоят фийд

За създатели

  • Добави продукта си
  • Заяви своя профил
  • Реклама
  • Критерии за включване

EuroMakers

  • За нас
  • Контакт
  • API
  • Поверителност
  • Условия
Разгледай картата →

© 2026 EuroMakers. Създадено с убеждение в Европа. Логата на продуктите принадлежат на техните създатели.

Език: Български
  • 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