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

Ποιο να χρησιμοποιήσω;

  • Αρχεία στιγμιότυπου: δωρεάν, αναγνώσιμα από κάθε ιστότοπο, ξαναφτιάχνονται κάθε νύχτα, χωρίς όρια. Για browsers και εργασίες με όλο τον κατάλογο.
  • Ζωντανό API: για τον server σας, περίπου 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();

Endpoints

Κάθε endpoint απαντά σε 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

Cache

Κρατιέται στο άκρο του δικτύου έως 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

Cache

Κρατιέται στο άκρο του δικτύου έως 24 ώρες και καθαρίζεται όταν αλλάζει ο κατάλογος. s-maxage=86400

GET /api/software/countries

Πίνακας ονομάτων χωρών, το καθένα μία φορά, με τη σειρά του καταλόγου (χωρίς ταξινόμηση).

Παράμετροι

Καμία

Παράδειγμα
curl https://www.euromakers.org/api/software/countries
Απάντηση
["Germany", "France", "Slovakia", "…"]
Σφάλματα

429 · 500 · 503

Cache

Κρατιέται στο άκρο του δικτύου έως 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

Cache

Κρατιέται στο άκρο του δικτύου έως 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 ή κανένα endpoint σε αυτή τη διαδρομή.
429rate_limitedΞεπεράστηκε το όριο αιτημάτων.
500internal_errorΚάτι πήγε στραβά από τη δική μας πλευρά.
503catalog_unavailableΟ κατάλογος δεν φορτώθηκε.

Όρια αιτημάτων

60 αιτήματα ανά 60 δευτερόλεπτα για κάθε διεύθυνση IP, κοινά για όλα τα endpoints, μαζί με τις απαντήσεις από την cache. Πάνω από το όριο παίρνετε 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, άρα ένας browser σε άλλον ιστότοπο δεν μπορεί να το διαβάσει. Σε browser, χρησιμοποιήστε τα αρχεία στιγμιότυπου: κάθε ιστότοπος μπορεί να τα διαβάσει.

Εκδόσεις

Αυτή είναι η έκδοση 1 του API και των αρχείων στιγμιότυπου. Μόνο προσθέτουμε: καμία διαδρομή, πεδίο ή τύπος δεν αλλάζει ούτε χάνεται. Μια ασύμβατη αλλαγή θα ερχόταν ως νέα έκδοση δίπλα σε αυτή.

Χρήση και αναφορά

Το API είναι δωρεάν για κάθε χρήση. Βάλτε σύνδεσμο προς το EuroMakers όπου δείχνετε τα δεδομένα του. Τα λογότυπα ανήκουν στους δημιουργούς τους και ο κατάλογος δεν μεταπωλείται μαζικά.

Όροι χρήσης

Για μηχανές

  • /openapi.json · Περιγραφή OpenAPI 3.1 κάθε endpoint
  • /llms.txt · Σύνοψη του site για γλωσσικά μοντέλα
  • 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