EuroBrussels Jobs API: Brussels EU & NGO Jobs
Pricing
$0.20 / 1,000 job results
EuroBrussels Jobs API: Brussels EU & NGO Jobs
$0.2/1K jobs | Get EU affairs and policy jobs from EuroBrussels: associations, think tanks, NGOs and consultancies, mostly in Brussels. Full descriptions, locations and posting dates. No login or API key. Repeats skipped on re-runs.
EuroBrussels Jobs Scraper: Brussels EU Jobs (No Login)
$0.2/1K jobs | Get EU affairs and policy jobs from EuroBrussels: associations, think tanks, NGOs and consultancies, mostly in Brussels. Full descriptions, locations and posting dates. No login or API key. Repeats skipped on re-runs. Independent, unofficial tool. Not affiliated with or endorsed by EuroBrussels.
EuroBrussels EU Affairs Jobs Bulk Scraper
Our Actor collects European affairs jobs from EuroBrussels and lets you filter by keyword and posting age. Employers in our test runs were associations, think tanks, NGOs, consultancies and international organisations, mostly in Brussels, with some roles in Luxembourg, Warsaw and other cities. Every row carries the complete original description in text and in the board's own HTML markup, plus the employer, location and posting date. It is ideal for EU job alerts, internship trackers and hiring research on the Brussels policy sector.
This Actor reads postings that Job Atlas has already collected and stored. It does not contact EuroBrussels while your run is going. Only postings with a verified complete description are included, so the count can be lower than what the live site shows.
- Need job function, industry and work-arrangement labels on every row? EURACTIV Jobs Scraper carries them. It covers a different board, and some roles appear on both (2 of 10 in our test, matched by title and employer), so expect repeats if you run both.
- Browse all Job Atlas job-data Actors: https://jobatlas.dev/actors
Key Benefits
- No login or API key: nothing to set up and no account at risk. Your run reads stored postings and never contacts EuroBrussels.
- Low pricing: $0.20 per 1,000 jobs, with no start fee. Apify platform usage for the run is included in that price.
- Full descriptions: every row has the complete original text and HTML. Snippets and cut-off bodies are left out.
- Fast and fresh: a 10-job test run finished in about 7 seconds. Each run also reports when the source was last checked (
sourceFreshAt); it was 15 minutes before our test run. - No repeats across runs: schedule the same search daily and postings you already received are skipped.
- Optional AI enrichment and English translation, both off by default, funded by us: no API key and no extra charge.
How It Works
- Provide your search (all optional):
- Keyword (e.g.,
public affairs,energy,intern): a case-insensitive phrase matched against the title, employer and complete original description. Leave it empty to search all stored jobs. - Posted within (e.g.,
7d):any, or a duration in hours, days, weeks or months such as24h,7d,2wor1m. Default isany. If the board shows no reliable posting date, the date we first saw the posting is used. - Work arrangements:
remote,hybridoronsite. Empty means all. Read the work-arrangement note below before relying on this filter.
- Keyword (e.g.,
- Set the maximum number of jobs (up to 200;
0also means 200). - Run the Actor. Jobs land in the dataset; the run's key-value store holds
RUN-SUMMARYwith data freshness, candidates scanned, delivery counts and the final status.
Example input:
{"schemaVersion": "nomad-agent-inventory-search-v1","maxItems": 10,"postedWithin": "any","workArrangements": [],"dedupe": {"enabled": true,"key": ""},"keyword": "policy"}
Run the same search again and you get only postings you have not received yet; set dedupe.enabled to false to see everything again.
More settings:
maxItems- Maximum number of jobs to return. Default is100. Filters, repeat suppression and failed enrichment can produce fewer results.filters- Advanced filter over normalized fields in the sharednomad-agent-job-filter-v1format; see the product guide for the expression format. With AI enrichment off, filters check only facts the board states, and unknown values never satisfy a comparison.aiEnrichment- Optional AI fill of unknown fields. Default is off.translateToEnglish- Optional English display text. Default is off.dedupe- Repeat-delivery suppression. Default is on.
Restrictive filters or repeat-delivery suppression can produce zero results. If the stored data is unavailable or stale, the run fails with an error instead of falling back to scraping the website.
Few structured fields. Rows carry title, employer, location, posting date and the description. Pay appears inside the description text (for example € 1.200 per month), and category, closing date, contract type and work arrangement were empty on all 10 test rows. Switch on AI enrichment if you want supported unknown fields filled from the text.
Work arrangement filter. It only matches jobs where the field is filled, which was none of the test rows without AI enrichment. With enrichment on, unknown values are checked again after enrichment.
Location labels are kept as written. City and country are parsed when the label is clear, such as Brussels, Belgium. A label like Brussels, London or Berlin is kept in locations[].raw but its country field came out as London or Berlin in our test.
Pricing
You pay $0.20 per 1,000 jobs ($0.0002 per delivered job). There is no start fee, and Apify platform usage for the run is included in that price (pay-per-event). AI enrichment and English translation add no extra charge.
Data You'll Receive
- Job details: title, complete description (text and the board's original HTML markup), posting date (a date, no time of day) and a link to the posting (
identity.url). - Employer: the name as the board lists it, often an acronym plus the full name (for example
CEPS - Centre for European Policy Studies). - Location: the board's label in
data.locations[].raw, with city and country filled when the label is clear. - Identity:
identity.sourceand the board's numericidentity.externalId(for example297736), stable across runs and usable as a deduplication key. - Board extras in
custom.data: organisation, page title, headings and the source last-modified date. - Not in structured fields: pay, category, deadline, contract type and work arrangement (see the limits above).
- AI block
llm:not_requestedunless you switch on enrichment.
Every row follows the nomad-agent-job-v1 format with six roots: schemaVersion, identity, data, llm, raw and custom. Missing facts are null; a known empty list is [].
Sample output data
Here is an example job from this Actor. Empty fields, custom.schemaId and the tail of long text are left out.
{"llm": {"status": "not_requested"},"raw": {"description": "Trainee for Social Affairs\n\nEUROCITIES\n\nBrussels, Belgium\n\n€ 1.200 per month\n\nEurocities is recruiting a trainee to work on topics related to social affairs and employment, joining our team to cover both policy activities and project implem…","descriptionHtml": "<h2 style=\"text-align: center;\">Trainee for Social Affairs</h2>\r\n<h2 style=\"text-align: center;\">EUROCITIES</h2>\r\n<h2 style=\"text-align: center;\">Brussels, Belgium</h2>\r\n<p style=\"text-align: center;\">€ 1.200 per month</p>\r\n<p>Eurociti…"},"data": {"title": "Trainee for Social Affairs","company": {"name": "EUROCITIES"},"locations": [{"raw": "Brussels, Belgium","city": "Brussels","countryName": "Belgium"}],"application": {"postedAt": "2026-10-15"}},"custom": {"data": {"jobId": "297736","headings": ["Trainee for Social Affairs","EUROCITIES","Brussels, Belgium"],"pageTitle": "Trainee for Social Affairs - EUROCITIES, Brussels","organisation": "EUROCITIES","sitemapLastmod": "2026-10-15","locationHeading": "Brussels, Belgium"}},"identity": {"url": "https://www.eurobrussels.com/job_display/297736/Trainee_for_Social_Affairs_EUROCITIES_Brussels_Belgium","source": "eurobrussels","externalId": "297736"},"schemaVersion": "nomad-agent-job-v1"}
EuroBrussels Jobs API
Results are stored in a dataset that you can export as CSV, JSON or Excel, or read through the Apify API. Apify schedules and webhooks work as for any Actor, so you can run a search every day and send only the new postings on.
Repeat delivery and optional processing
No repeats across runs. Repeat-delivery suppression is on by default. Postings already delivered to you for the same search are skipped, so a daily schedule returns only what is new. The delivery history belongs to your Apify account, this Actor and the search. Set dedupe.enabled to false for a stateless run. A dedupe.key of your own names the history: reuse a key to share one history across searches, or use different keys to keep alert histories apart. If the delivery history cannot be read or written, the run fails instead of claiming a successful delivery.
AI enrichment and English translation. Both are off by default and are independent opt-ins: aiEnrichment.enabled for extraction and translateToEnglish for English display text. You do not supply API keys. Only when enabled, we send description text to OpenRouter for extraction or selected display text to DeepL for translation. The configured routes deny provider data collection but do not guarantee zero retention or EU-only processing. Enrichment fills unknown fields and records its provenance in llm; it never overwrites a fact the board states. If you ask for enrichment and it fails for a job, that job is withheld from the results. raw.description and raw.descriptionHtml always keep the original text. Filters run on normalized values before English display translation.
Older input formats
The previous nomad-agent-job-search-input-v1 keyword block is still accepted for compatibility. includeRaw must stay true, and source-native country or sort requests must move to the normalized filters. New integrations should use nomad-agent-inventory-search-v1. The top-level accuracy field is a compatibility override for aiEnrichment.accuracy; it never switches enrichment on by itself.
Support and Feedback
We improve these Actors from your feedback. If something breaks or you need a filter:
- Open an issue on the Actor's Issues tab.
- If this Actor saved you time, a short review on the Store helps other users find it.
Run evidence
Test runs on 2026-10-16 from the Job Atlas account, using the latest build and a fresh repeat-delivery scope key:
- Run
dXIka6mxKlDCoxPog(build 1.90.1), keywordpolicy, 10 of 10 rows with the full description from 10 distinct employers, finished in 7 seconds. The run summary showed the stored data had been checked against the source before the run (sourceFreshAt).
Measured on the 10 test rows (no AI enrichment): title, employer, location, posting date and description on 10 of 10; every other structured field (pay, category, closing date, contract type, work arrangement) on 0 of 10.
Use latest and keep the build ID and number your own run returns. A successful status alone does not tell you how complete the board coverage is; read RUN-SUMMARY together with the dataset.
Job Atlas
Explore the Job Atlas job-data and matching Actors:
Product guide | Source and client examples | Setup skill | Setup guide | Job Atlas Actors
Independent tool. We built and run this Actor ourselves. EuroBrussels does not operate, sponsor or endorse it, and its name is used only to say which site the data comes from.