GermanTechJobs Scraper avatar

GermanTechJobs Scraper

Pricing

from $1.20 / 1,000 results

Go to Apify Store
GermanTechJobs Scraper

GermanTechJobs Scraper

Scrape 3,000+ German tech job listings from germantechjobs.de. Filter by city, role, experience level, workplace type, tech stack, and language. Full job descriptions, salary ranges, and perks included.

Pricing

from $1.20 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

13

Total users

7

Monthly active users

3 days ago

Last modified

Share

GermanTechJobs Scraper

Extract tech job listings from germantechjobs.de at scale, with the richest field set available: full descriptions, structured salary, company profiles, precise geo-coordinates, perks, and per-employer engineering-practice signals. No API key required.


Why this scraper?

🎯 Built for German tech

A dedicated scraper for germantechjobs.de, not a global tool with a country dropdown. Filters, salary handling and currency (EUR) are tuned for the source.

📄 Complete job data

Full title, description in plain text, HTML and Markdown, direct listing URL, the employer's own apply URL, publish date, and the date the job first appeared.

💶 Structured salary

Minimum, maximum, pay period and currency in EUR, taken straight from the listing. Missing salaries are returned as null, never guessed, and a hasSalary flag lets you filter instantly.

🏢 Company profiles

Company name, ID, size band, type, corporate website, company page, and logo where the source publishes them.

📍 Precise location

City, city category, postal code, full address, and latitude/longitude for mapping and radius analysis, plus a workplace flag (on-site, hybrid, remote).

🧰 Perks & engineering signals

Human-readable perks (visa sponsorship, relocation, remote days, pension, and more) plus, on detail fetch, an engineering-practices block: version control, unit tests, code reviews, CI, Scrum, pair programming and more.


Input parameters

ParameterTypeDefaultDescription
keywordstring"developer"Keyword matched against title, company, tech category and stack. Case-insensitive. Empty returns all listings.
citystring(empty)City name or city category (e.g. Berlin, Munich, Frankfurt). Case-insensitive partial match.
jobTypestringAllEmployment type: Full-Time, Part-Time, Internship, Contract, or All.
expLevelstringAllExperience level: Junior, Regular, Senior, Lead, or All.
workplacestringAllWorkplace: On-site, Hybrid, Remote, or All.
languagestringAllWorking language: German, English, Dutch, or All.
techCategorystring(empty)Technology category (e.g. DevOps, Java, SAP, Security). Partial match.
technologiesstring(empty)A single technology in the stack (e.g. Python, Kubernetes, React). Partial match.
minSalaryinteger0Minimum published annual salary in EUR. Excludes listings with no salary. 0 disables.
visaSponsorshipOnlybooleanfalseReturn only listings offering visa sponsorship.
daysOldinteger0Only listings published within this many days. 0 disables.
maxResultsinteger1000Maximum results after filtering. 0 for no limit.
fetchDetailsbooleanfalseFetch each detail page for the full description, nice-to-have requirements, responsibilities, apply email, engineering practices, and first-listed / last-updated dates.

Output schema

Every field below is present on every record. Fields the source does not publish for a given job are returned as null rather than omitted. Fields marked (detail) are populated only when fetchDetails: true.

FieldTypeDescription
idstringUnique listing ID from the source.
titlestringJob title as published.
companystringHiring company name.
companyIdstring|nullInternal company identifier, where present.
urlstringDirect link to the listing on germantechjobs.de.
slugstringURL slug of the listing.
applyUrlstring|nullThe employer's own application URL, where published.
companyPageUrlstring|nullLink to the company's profile page on the source.
companyWebsitestring|nullCompany's corporate website.
companyLogostring|nullURL of the company logo image.
citystring|nullCity of the position.
cityCategorystring|nullCity category used by the source for grouping.
postalCodestring|nullPostal code of the position.
addressstring|nullStreet address, where published.
latitudenumber|nullLatitude of the workplace.
longitudenumber|nullLongitude of the workplace.
workplacestring|nulloffice, hybrid or remote.
jobTypestring|nullFull-Time, Part-Time, Internship or Contract.
expLevelstring|nullJunior, Regular, Senior or Lead.
languagestring|nullRequired working language.
techCategorystring|nullPrimary technology category.
metaCategorystring|nullBroader source category grouping.
technologiesarrayTechnologies listed in the job's stack.
filterTagsarrayAdditional tags the source attaches to the listing.
annualSalaryFromnumber|nullLower bound of the annual salary.
annualSalaryTonumber|nullUpper bound of the annual salary.
salaryMinnumber|nullAlias of annualSalaryFrom.
salaryMaxnumber|nullAlias of annualSalaryTo.
salaryPeriodstring|nullPay period (yearly) when a salary is present.
salaryCurrencystring|nullCurrency code (EUR) when a salary is present.
hasSalarybooleanWhether the listing publishes a salary.
companySizestring|nullEmployee-count band (e.g. 50-200, 5k+).
companyTypestring|nullProduct, Services or Startup.
hasVisaSponsorshipbooleanWhether the employer offers visa sponsorship.
candidateContactWaystring|nullHow candidates apply (CompanyWebsite or Email).
isPartnerbooleanWhether the employer is a source partner.
isPausedbooleanWhether the listing is currently paused.
onBundesagenturbooleanWhether the job is also listed on Germany's Bundesagentur für Arbeit.
perksarrayHuman-readable perks (e.g. Relocation support, 30 days vacation).
perkKeysarrayRaw perk keys as returned by the source.
publishDatestring|nullPublish date (YYYY-MM-DD).
publishDateISOstring|nullFull ISO publish timestamp.
firstListedAtstring|null(detail) When the listing first appeared on the source.
lastUpdatedAtstring|null(detail) When the listing was last updated.
descriptionstring|null(detail) Full job description, plain text.
descriptionHtmlstring|null(detail) Full description rendered as HTML.
descriptionTextstring|null(detail) Full description, plain text.
descriptionMarkdownstring|null(detail) Full description as Markdown.
requirementsstring|null(detail) Must-have requirements.
requirementsNicestring|null(detail) Nice-to-have requirements.
responsibilitiesstring|null(detail) Key responsibilities.
applyEmailstring|null(detail) Application email, where the employer applies by email.
offerStockOrBonusboolean|null(detail) Whether stock or bonus is offered.
allowDirectContactboolean|null(detail) Whether the employer accepts direct contact.
tierstring|null(detail) Listing tier (e.g. premium).
engineeringPracticesobject|null(detail) Booleans for version control, unit tests, integration tests, static analysis, code reviews, pair programming, CI build server, Scrum, dedicated testers, time tracking.
contentHashstringStable 16-char hash of core identity fields, for deduplication across runs.
sourcestringAlways germantechjobs.de.
scrapedAtstringISO timestamp when this record was scraped.

Example record

{
"id": "6a46492f742cb6a626e795e7",
"title": "IT Infrastructure Specialist (w/m/d)",
"company": "Sunrise Medical GmbH",
"companyId": "6154224701bd7d0018eafa67",
"url": "https://germantechjobs.de/jobs/Sunrise-Medical-GmbH-IT-Infrastructure-Specialist-wmd",
"slug": "Sunrise-Medical-GmbH-IT-Infrastructure-Specialist-wmd",
"applyUrl": "https://sunrisemedical.de/karriere/it-infrastructure-specialist",
"companyPageUrl": "https://germantechjobs.de/companies/sunrise-medical",
"companyWebsite": "sunrisemedical.de",
"companyLogo": "https://germantechjobs.de/img/company/sunrise-medical-logo.jpg",
"city": "Malsch / Heidelberg",
"cityCategory": "Mannheim",
"postalCode": "69254",
"address": "Kahlbachring 2-4",
"latitude": 49.2420119,
"longitude": 8.65369853,
"workplace": "hybrid",
"jobType": "Full-Time",
"expLevel": "Regular",
"language": "German",
"techCategory": "DevOps",
"metaCategory": "infra",
"technologies": ["Active Directory", "Azure", "Hyper-V", "Support"],
"filterTags": ["Windows Server", "Microsoft 365", "Virtualisierung"],
"annualSalaryFrom": 60000,
"annualSalaryTo": 75000,
"salaryMin": 60000,
"salaryMax": 75000,
"salaryPeriod": "yearly",
"salaryCurrency": "EUR",
"hasSalary": true,
"companySize": "1k-5k",
"companyType": "Product",
"hasVisaSponsorship": false,
"candidateContactWay": "CompanyWebsite",
"isPartner": false,
"isPaused": false,
"onBundesagentur": true,
"perks": ["Flexible working hours", "Hybrid work", "2 days remote/week", "Company pension plan"],
"perkKeys": ["flexiblework", "hybridwork", "remote2day", "extraretirement"],
"publishDate": "2026-07-03",
"publishDateISO": "2026-07-03T00:00:00.000+02:00",
"firstListedAt": "2024-11-18T09:12:04.100Z",
"lastUpdatedAt": "2026-07-03T06:20:11.412Z",
"description": "IT Infrastructure Specialist (w/m/d) — Malsch bei Heidelberg. Unsere Philosophie lautet: Improving People's Lives ...",
"descriptionHtml": "<p>IT Infrastructure Specialist (w/m/d)<br>Malsch bei Heidelberg</p><p>Unsere Philosophie lautet: Improving People's Lives ...</p>",
"descriptionText": "IT Infrastructure Specialist (w/m/d) — Malsch bei Heidelberg. Unsere Philosophie lautet: Improving People's Lives ...",
"descriptionMarkdown": "IT Infrastructure Specialist (w/m/d) — Malsch bei Heidelberg. Unsere Philosophie lautet: Improving People's Lives ...",
"requirements": "- Abgeschlossene IT-Ausbildung oder vergleichbare Qualifikation\n- Mehrjährige Erfahrung in IT-Infrastruktur / Systemadministration",
"requirementsNice": "- Kenntnisse in Azure und Microsoft 365\n- Erfahrung mit Virtualisierung",
"responsibilities": "- Betreuen und Entwickeln der IT-Infrastruktur\n- Sicherstellen des stabilen und sicheren Betriebs",
"applyEmail": "l.pawlik@sunrisemedical.de",
"offerStockOrBonus": false,
"allowDirectContact": false,
"tier": "premium",
"engineeringPractices": {
"versionControl": true,
"unitTests": true,
"integrationTests": false,
"staticCodeAnalysis": true,
"codeReviews": true,
"pairProgramming": false,
"buildServer": true,
"scrum": true,
"testers": false,
"timeTracking": false
},
"contentHash": "3f9a1c2b7e0d4a58",
"source": "germantechjobs.de",
"scrapedAt": "2026-07-06T09:31:15.674Z"
}

Examples

Senior DevOps roles in Munich

{
"keyword": "DevOps",
"city": "Munich",
"expLevel": "Senior",
"maxResults": 100
}

Remote jobs posted in the last 3 days

{
"workplace": "remote",
"daysOld": 3,
"maxResults": 500
}

Well-paid roles with visa sponsorship

{
"minSalary": 70000,
"visaSponsorshipOnly": true,
"fetchDetails": true
}

Daily feed (run on a schedule)

{
"daysOld": 1,
"maxResults": 500
}

Schedule this input to run once a day in the Apify Scheduler — each run returns only jobs posted in the last 24 hours.


💰 Pricing

$1.50 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.

ResultsCost
100~$0.15
1,000~$1.50
10,000~$15.00
100,000~$150.00

Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Subscription tiers lower the rate further, down to $0.90 per 1,000 at the highest tier. Use the Max results cap in the input to control your spend exactly.


Performance

Run sizeTypical time
100 resultsunder 1 minute
1,000 results2–4 minutes
Full listing (list only)under 2 minutes
1,000 results with fetchDetails8–12 minutes

Running without fetchDetails returns the full list-level field set in a single request and is the fastest, cheapest mode. Enable fetchDetails only when you need descriptions, requirements, or engineering-practice signals.


Known limitations

  • Salary is only returned when the employer publishes it — many listings carry null salary fields.
  • Descriptions, requirements, responsibilities and engineering practices are only available with fetchDetails: true.
  • The source lists German tech roles only; it is not a general German job board.
  • Listings can be removed by the source at any time, so a small share of URLs may expire shortly after scraping.

Technical details

  • Source: germantechjobs.de — German tech job listings
  • Coverage: the full public listing set, filterable via the input parameters above
  • Deduplication: every record carries a stable contentHash for cross-run matching
  • Retry: automatic retry on network errors with exponential backoff

Need a custom scraper?

Unfenced Group builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

Get in touch: www.unfencedgroup.nl