If you are building a job search tool — agentic or otherwise — the hardest part is not the AI. It is the sources. Which job boards have APIs? Which ones block scrapers? What rate limits apply? Which ones cover Switzerland but not Austria? Which ones require authentication?

This information is scattered across documentation pages, forum posts, and hard-won production experience. Every team building a job crawler rediscovers the same answers from scratch.

Kitsuno’s open-source directory solves this. One YAML file per source. Structured, validated, and informed by real crawl experience.

What is in the repository

The agentic-job-search-eu repository contains a structured directory of job sources reachable from Europe. Each source is a single YAML file following a consistent schema.

What each source file documents: name, URL, geographic coverage (countries and regions), access method (public API, RSS feed, scraping required), authentication requirements, observed rate limits, data format, typical job categories, update frequency, license posture, and real-world crawl notes from production use.

What “real-world crawl notes” means: these are not copy-pasted from documentation. They come from Kitsuno’s Scanner agent operating in production — actual observations about response behavior, rate limit enforcement, data quality quirks, and failure modes. When a source file says “returns 403 after 200 requests per hour,” that is a measured observation, not a guess.

The directory launched with over 30 sources spanning national employment agencies (France Travail, NAV.no, Platsbanken, Arbeitsagentur), global platforms (LinkedIn, Indeed, Adzuna), remote-first boards (RemoteOK, Remotiv, Working Nomads), humanitarian organizations (Devex, ReliefWeb, 80,000 Hours), and ATS meta-search across platforms like Greenhouse, Lever, Ashby, and Workday.

The schema

Every source follows a consistent YAML schema defined in sources/_schema.yml. The schema enforces required fields, valid values, and structural consistency. A Python validator (tools/validate.py) runs in CI on every pull request — malformed or incomplete source files cannot be merged.

This means the directory is not just a list. It is machine-readable structured data that other tools can consume programmatically. Want to filter sources by country? Parse the YAML. Want to find all sources with public APIs? Query the access type field. The data is designed for automation, not just reading.

Why open source

Kitsuno crawls these sources in production. Publishing the directory as open source does not give away competitive advantage — the value is in the scoring engine, the career library, and the six-agent pipeline, not in knowing that France Travail has a public API.

What open source does give is: community contributions (new sources, updated crawl notes, corrected rate limits), credibility (the directory is verifiable), and a useful resource for the broader ecosystem of career tools being built in Europe.

The licensing is split intentionally. Code (validator, examples, schema) is MIT — use it however you want. Source data (YAML files, statistics) is CC-BY-SA 4.0 — use it freely, but attribute and share improvements back. This keeps the data growing while keeping the tooling unrestricted.

How to contribute

Fork the repository. Create a new YAML file in sources/ following the schema. Run python tools/validate.py to check your file. Open a pull request with a description of the source and how you verified the information.

Good contributions include: new sources not yet in the directory, updated crawl observations from your own experience, corrected rate limits or access methods, and coverage expansions (new countries or regions for existing sources).

The repository has a wishlist of sources that are known but not yet documented — including StepStone, Jobindex, HelloWork, Totaljobs, and Karriere.at. Pull requests for any of these are especially welcome.

For builders

If you are building an agentic job search tool, career crawler, or job market research project, this directory gives you a head start. Instead of spending weeks researching which sources exist, how to access them, and what their limits are, you can start from documented, production-tested source profiles.

The example loaders in examples/ show how to parse the YAML files in Python and JavaScript. The schema is stable — source files added six months from now will follow the same structure as the ones there today.

View the repository on GitHub →


This directory is maintained by Kitsuno and the open-source community. For the methodology behind how Kitsuno uses these sources, read How we measure job-market signal. For the principles that guide the project, read Why Kitsuno exists.