Germany Visa-Sponsored Jobs avatar

Germany Visa-Sponsored Jobs

Pricing

from $5.00 / 1,000 enriched job results

Go to Apify Store
Germany Visa-Sponsored Jobs

Germany Visa-Sponsored Jobs

Find Germany jobs that sponsor work visas (Blue Card, Skilled Worker, ICT). Pulls the federal Bundesagentur Jobboerse, enriches with full descriptions, classifies visa-sponsorship likelihood (regex + opt-in LLM tie-breaker), and dedupes across runs. For relocation services and intl. job seekers.

Pricing

from $5.00 / 1,000 enriched job results

Rating

0.0

(0)

Developer

CG Nguyễn

CG Nguyễn

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

germany-visa-jobs — German jobs that actually sponsor work visas, as a JSON feed

The Bundesagentur federal job board, filtered for visa sponsorship. For relocation consultants, expat engineers, and AI agents who can't ask candidates "but will they sponsor?" one more time.

Searches Germany's federal job board (Bundesagentur für Arbeit Jobboerse, ~1.6M live listings) and emits structured JSON with a visa-sponsorship classifier stamped on every row: confirmed | likely | unlikely | unknown. Pay-per-result.


Why this exists

The federal Bundesagentur board has every German job opening worth looking at — but it has no "sponsors visa" filter, no salary band, and no English search. So every Tier-3 country candidate, every relocation consultant, every AI job-search agent ends up doing the same thing: fetch a listing, eyeball the description for "visa sponsorship" / "Aufenthaltstitel" / "Blue Card", repeat 200 times.

This actor closes that gap. One API call, structured JSON, visa status pre-classified.

It is not a job board. There's no UI. You bring the automation; we bring the typed, deduplicated, classified data.


Who it's for

PersonaUse case
Relocation consultancyDaily pull of confirmed + likely Berlin SWE roles into a Notion DB. Replace ~3 hrs/week per junior consultant.
Expat job-moverPipe new confirmed-status Blue Card roles for your stack into a personal Telegram bot. Apply within hours of listing.
AI job-search agent (MCP)Apify Actors are auto-exposed as MCP tools. Claude / / Codex agents call this when a user asks about visa-sponsoring German jobs. Zero integration work.
Recruitment SaaSSource side of a visa-aware ATS. License via Apify Enterprise.
Researcher / labour-market analystTime-series of sponsorship signals across regions and professions. The federal API doesn't expose this — we synthesize it.

The moat: visa-sponsorship classifier

Every dataset row carries a visaStatus plus the evidence we used to label it.

visaStatusWhat it meansHow we decide
confirmedMultiple hard-positive sponsorship phrases. Apply with confidence.≥2 hard-positive signals AND no hard-negatives
likelyOne explicit sponsorship phrase ("visa sponsorship", "Blue Card", "relocation support", "Aufenthaltstitel").≥1 hard-positive AND no hard-negatives
unlikelyHard-negative phrase or known citizenship-restricted employer (e.g. BWI GmbH = Bundeswehr IT).≥1 hard-negative
unknownDescription doesn't mention visa either way. Default majority.Neither side fires

Reality check from production runs: ~93% of German listings fall to unknown because most employers simply don't state sponsorship in text. This is the actual market signal, not a bug. For agencies who only want safe bets, filter to confirmed + likely. For aggressive sourcers, filter to confirmed + likely + unknown and assume "unknown = ask the recruiter."

Optional LLM tie-breaker (useLlmTiebreaker: true) escalates the bottom 30% of ambiguous cases to Claude Haiku 4.5 for a final read. Costs $0.001 per escalation, capped at a configurable fraction of the run. Default off.


Output — real, unredacted

One verified dataset row from a Berlin "visa sponsorship" search:

{
"refnr": "15170-448146640-S",
"title": "Quality Engineer (f/m/d) Investment Castings",
"employer": "Siemens Energy Global GmbH & Co. KG",
"profession": "Ingenieur/in - Maschinenbau",
"city": "Berlin",
"postalCode": "13629",
"region": "BERLIN",
"country": "DEUTSCHLAND",
"fullTime": true,
"isStaffingAgency": false,
"url": "https://www.arbeitsagentur.de/jobsuche/jobdetail/15170-448146640-S",
"visaStatus": "likely",
"visaClassifier": "regex-v1",
"visaReason": "1 hard-positive: visa sponsorship",
"visaSignals": {
"hardPositive": ["visa sponsorship"],
"hardNegative": [],
"soft": ["global organization"]
},
"descriptionPreview": "A Snapshot of Your Day — This position combines Project, Quality, and Supplier Management...",
"fetchedAt": "2026-05-17T11:19:45.990Z"
}

And a hard-negative example (correctly filtered as unlikely):

{
"title": "Software Engineer Full Stack (m/w/d)",
"employer": "BWI GmbH",
"city": "München",
"visaStatus": "unlikely",
"visaReason": "Hard-negative signal(s): BWI GmbH (Bundeswehr IT — citizenship typically required)",
"visaSignals": {
"hardPositive": [],
"hardNegative": ["BWI GmbH (Bundeswehr IT — citizenship typically required)"],
"soft": ["remote / mobile work"]
}
}

Full field list: refnr, title, employer, profession, city, postalCode, region, country, coordinates, salaryFromEUR, salaryToEUR, salaryKind, salaryRange, fullTime, partTime, shiftWork, isStaffingAgency, isPrivatePlacement, employerHomepage, publishedAt, modifiedAt, description, descriptionPreview, descriptionLength, allLocations, url, visaStatus, visaClassifier, visaReason, visaSignals, fetchedAt.

Three dataset views are exposed (overview, confirmed-only, full-details) — pick from the Apify console.


Input

Full schema with descriptions: see the Input tab in the Apify console.

FieldTypeDefaultNotes
searchTermstringrequiredRole keyword, EN or DE. E.g. "Software Engineer", "Data Scientist", "Pflegefachkraft".
locationstring""German city or postal area. Empty = all Germany.
radiusKminteger25Search radius around location.
salaryMinEURinteger0Minimum yearly salary filter (federal API field).
remoteAllowedbooleanfalseFilter to remote-allowed listings only.
publishedDaysAgointeger7Skip listings older than N days.
offerTypesarray<enum>["1"]1=permanent, 2=temp, 4=apprenticeship, etc.
includeTemporaryAgencybooleanfalseInclude staffing agencies (often visa-unfriendly).
visaStatusFilterarray<enum>["confirmed","likely","unknown"]Drop everything else from the dataset.
useLlmTiebreakerbooleanfalseEscalate ambiguous cases to Claude Haiku 4.5. Requires anthropicApiKey.
anthropicApiKeystring (secret)""Your Anthropic API key. Only needed if tie-breaker is on.
llmTiebreakerMaxFractionnumber0.3Cap LLM calls at this fraction of the run.
dedupAcrossRunsbooleantruePersistent KV store of seen refnrs; skip on repeat.
dedupHorizonDaysinteger7Prune dedup cache entries older than N days.
maxResultsinteger100Hard cap per run.
includeRawDescriptionbooleanfalseEmit full description in addition to the preview.

Pricing — Pay Per Event

EventPriceFires when
actor-start-gb$0.00005 / GBAt run start. First 5 seconds waived.
enriched-result$0.005A job that passes classifier + filter + dedup and lands in the dataset.
llm-tiebreaker-call$0.001One Anthropic Haiku 4.5 escalation. Only if useLlmTiebreaker: true.

≈ $5 per 1,000 enriched results. You pay for results, not for cycles. Repeated runs skip already-seen jobs and cost nothing.

You are...CadenceEnriched/moMonthly cost
Solo job-mover (one role, one city)Daily~150~$0.75
Active consultancy (5 roles × Berlin/Munich/Hamburg)Daily~1,500~$7.50
Recruitment SaaS (50 client searches)Daily~15,000~$75

How it stays clean

  • Federal API directbundesagentur-jobsuche upstream, no scraping fragile HTML, no Cloudflare challenges, no proxy needed.
  • Deduplication across runs — refnrs persisted in an Apify KV store. Poll daily without paying twice for the same job.
  • Stale-prune — refnr cache older than 7 days (configurable) is dropped to keep the store light.
  • Classifier transparency — every row exposes visaReason + visaSignals. You can override our judgement; we don't hide the evidence.
  • Cost ceiling — LLM tie-breaker is opt-in and capped at a fraction of the run. Worst-case cost is bounded before you press Start.

  • Reads only the public Bundesagentur Jobboerse API via client jobboerse-jobsuche (no OAuth, no scraping). De-facto public, no formal commercial-use restriction documented — verify before running at scale.
  • The visa classifier is heuristic, not legal advice. confirmed does not guarantee sponsorship will be offered; unlikely does not guarantee it won't. Always confirm with the employer.
  • We don't store personal data beyond what the federal API itself publishes.

Frequently asked

Q: Why not just grep "visa sponsorship" yourself? You can. But the federal API only returns 25 listings per page, requires base64 keys for detail fetches, has German-only category codes, and returns no sponsorship signal of its own. Doing this once is fine. Doing it on a cadence for 5 roles across 3 cities is a part-time job.

Q: What's the false-positive rate on confirmed? The classifier is rule-based and conservative: confirmed requires multiple hard-positive phrases AND no hard-negatives, so false positives are rare in practice (we have not yet published a hand-graded benchmark). False negatives in unknown are the dominant error class — most German employers simply don't state sponsorship policy in text. The LLM tie-breaker is the lever for catching those.

Q: Can I add my own classifier rules? Not in v0.2. Patch list / employer hard-negatives are coming in v0.3 — open a request via the Apify console issues tab.

Q: Is there an MCP endpoint? Yes — automatically. Every Apify Actor with an input schema is exposed as an MCP tool. Point your Claude / / Codex client at the Apify MCP and this actor appears as germany-visa-jobs.

Q: Why "pay-per-event" and not subscription? Because most users only need a few hundred fresh listings per month. PPE means you pay for results, not for cycles. Sleeping users cost nothing.


Roadmap

  • v0.2 (current) — federal API, regex-v1 classifier, optional Haiku 4.5 tie-breaker, persistent dedup.
  • v0.3 — user-supplied hard-negative employer patches; per-row salary inference from text; German-language Aufenthaltstitel / Blaue Karte synonym set.
  • v0.4 — Stepstone + LinkedIn Jobs sibling actor wired into the same classifier.
  • v1.0 — calibrated probability output instead of bucket labels.

Sister actor

Need somewhere to live in the same city? cg_nguyen/wg-gesucht-de emits new WG-Zimmer listings minutes after they're posted. Same author, same pricing model.


Author

Built by @cg_nguyen. Senior Backend Engineer at SOA (Source of Asia), Hanoi. Working with European clients; lived the Tier-3 visa search myself. Bugs and feature requests via the Apify console issues tab.