πŸ† YourFirm.de Job Scraper – Search German Job Listings πŸ† avatar

πŸ† YourFirm.de Job Scraper – Search German Job Listings πŸ†

Pricing

Pay per usage

Go to Apify Store
πŸ† YourFirm.de Job Scraper – Search German Job Listings πŸ†

πŸ† YourFirm.de Job Scraper – Search German Job Listings πŸ†

Scrape job listings from YourFirm.de by keyword, location, contract type, and more. Supports full pagination and filters. Requires a German proxy.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Muhammad Shamshad Aslam

Muhammad Shamshad Aslam

Maintained by Community

Actor stats

5

Bookmarked

3

Total users

3

Monthly active users

19 days ago

Last modified

Categories

Share

YourFirm.de Job Scraper

Scrape job listings from YourFirm.de β€” one of Germany's leading job boards for the SME sector. Search by keyword and filter by location, contract type, working hours, and more.

What it does

  • Searches YourFirm.de by any number of job title keywords (e.g. Tiefbauer, Elektriker, Maurer), across any number of locations
  • Duplicate-free β€” the same posting found under several keywords is emitted once, deduplicated by YourFirm's own job id
  • Scrapes everything by default β€” every page of every keyword. YourFirm serves 25 jobs per page, so set maxPages to 4 for roughly 100 jobs per keyword if you want to stop earlier
  • Scrapes all result pages automatically with smart early-stop (stops if pages return no results)
  • Applies filters: location, radius, working hours, contract model, home office, and posting date
  • Outputs structured data ready for CSV export, webhooks, or CRM import

Output fields

Every job includes the search-card fields:

FieldDescription
jobIdUnique job ID on YourFirm.de (e.g. REG28901958, YF-46946)
titleFull job title
companyEmployer name
locationCity or region (comma-separated when multi-location)
urlDirect link to the job listing
employmentTypeFull-time / Part-time
benefitsList of perks (e.g. company car, job bike, 30+ vacation days)
postedDateDate the listing went live (DD.MM.YYYY)
refNoEmployer's internal reference number
logoUrlCompany logo image URL
keywordThe search keyword used

With Fetch Full Job Details (fetchDetails) enabled, each job additionally includes:

FieldDescription
descriptionFull job description (plain text)
descriptionHtmlFull job description (original HTML)
datePostedPosting date (ISO)
validThroughListing expiry date (ISO)
employmentTypeDetailStructured type, e.g. FULL_TIME
companyLogoHigh-resolution logo URL
jobLocationsStructured locations: city, postal code, region, country, latitude/longitude β€” one entry per work location
applyUrlEmployer's application URL (when the listing has one)

Mined from the description

Employers bury their real contact details in the job text. With fetchDetails on, these are pulled out into flat, single-value fields:

FieldDescription
emailApplication email. Taken from the structured application data when present, otherwise from the body text
phonePhone number found after Telefon: / Tel. / Fon
companyWebsiteThe employer's own site, normalised to its origin (e.g. https://iwakempten.de)
addressStreetStreet and house number from the address block
addressPostalCodeGerman 5-digit postcode
addressCityCity, including any suffix (e.g. Kempten (AllgΓ€u))
responsibilitiesBulleted duties, when the heading is recognisable
requirementsBulleted requirements (Ihr Profil, Das sollten Sie mitbringen, …)
benefitsBulleted perks (Das bieten wir Ihnen, Wir bieten, …)
{
"email": "Bewerbung@iwa-kempten.de",
"phone": "0831 52283-0",
"companyWebsite": "https://iwakempten.de",
"addressStreet": "Ulrich-Mair-Straße 4",
"addressPostalCode": "87435",
"addressCity": "Kempten (AllgΓ€u)",
"requirements": ["Abgeschlossenes Hochschulstudium im Bauingenieurwesen", "..."],
"benefits": ["Unbefristeter Arbeitsvertrag", "30 Urlaubstage und eine sehr gute Work Life Balance", "..."]
}

responsibilities / requirements / benefits only fill when the employer used a heading the actor recognises; German job ads vary a lot in wording. The full text is always available in description / descriptionHtml.

Input parameters

ParameterTypeDescription
keywordsArrayRequired. One or more job titles or skills. Each is searched separately and the results merged, deduplicated by job id. The run stops with an error if empty β€” there is no fallback keyword
locationsArrayCities or postcodes. Every keyword is searched in every location. Empty = all of Germany
maxPagesIntegerResult pages to scrape per keyword. YourFirm serves 25 jobs per page, so 4 pages β‰ˆ 100 jobs per keyword. 0 (default) = every page, i.e. all the jobs there are
maxEmptyPagesIntegerStop after N consecutive empty pages (default: 2)
locationStringCity, postal code, or region (e.g. Berlin, 10115)
perimeterRadiusIntegerRadius in km around location (e.g. 25)
employmentTypeStringvollzeit = Full-time, teilzeit = Part-time
contractTypeStringfestanstellung, ausbildung, praktikum, freiberufler, etc.
homeOfficeTypeString100-homeoffice or hybrides-arbeiten
onlyAdsOnlineForDaysSelectOnline since: All time (0), Since yesterday (1), Last week (7), Last month (30)
webhookUrlStringOptional. POST each job to your URL as it's found β€” one request per job
fetchDetailsBooleanVisit each job page for the full description, structured locations, and apply URL/email (see detail fields above)
proxyConfigObjectRecommended: Apify Residential proxy with country=DE

Proxy requirement

YourFirm.de is a German job board and may restrict access from non-German IP addresses. For reliable results, use Apify Residential Proxies with apifyProxyCountry: "DE" β€” this is pre-configured in the default input.

Use cases

  • Recruitment agencies β€” monitor new job postings in specific trades
  • Lead generation β€” find companies hiring in your target industry
  • Market research β€” track hiring trends across German SMEs
  • Job aggregators β€” feed listings into your own platform

Webhook delivery

Set webhookUrl and every job is POSTed to you the moment it's scraped β€” one HTTP request per job, with that job as the entire JSON body. Nothing to unwrap, no array to split, and no need to fetch the dataset afterwards. That's the shape Clay, n8n, Make and Zapier expect: each call fires one workflow run with the job fields already at the top level.

POST https://your-endpoint.example/hook
Content-Type: application/json
{ "jobId": "1001", "title": "Tiefbauer (m/w/d)", "company": "Bau GmbH", ... }

The dataset is always written first, so a webhook can never cost you data. Failed calls retry 3 times with backoff; if they still fail the job is logged and the run carries on, with a summary at the end (Webhook: 12 item(s) delivered, 2 failed…). A dead endpoint never fails the run.

One request per job means a 1,000-job run makes 1,000 calls. If your endpoint rate-limits, keep the page count modest or make sure it responds quickly β€” the actor waits for each call.