Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the StepStone Jobs API page →
Jobs & Hiring

StepStone Jobs API & Scraper

StepStone is one of Germany's largest job boards and also runs stepstone.at, stepstone.be and stepstone.nl.

3 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

This API reads those four sites as JSON. `search` takes a job title or keyword and a city, region or postcode, with a radius, and the filters StepStone itself offers: posted in the last 1, 3, 7 or 14 days, a minimum yearly salary, partial or full home office, full or part time, contract type (permanent, fixed term, freelance, internship, working student and more), experience level, StepStone quick apply, industry, skill and the language the ad is written in. Each page holds 25 jobs with job id, title, link, employer id and name, location, posted and expiry dates, the summary StepStone shows, the benefit bullets, a home-office flag, StepStone's salary estimate when it shows one, the quick-apply label and whether the row is an exact match or a nearby / similar job StepStone adds. Every answer also lists the filter values with their live counts. `job` returns the full ad: every text section (introduction, tasks, profile, benefits, extra information), contract and work type, employment type, industry, the address with coordinates when the employer publishes one, the employer card (open jobs, employees, sectors, address, founding year, about text) and StepStone's benefit icons. `company_jobs` lists all open jobs of one employer.

Reference

What a StepStone field actually contains

Fields that read differently from how they look. Measured against live stepstone.de, .at, .be and .nl answers on 2026-11-03.

FieldWhat it holds
salaryStepStone's own salary estimate for the job, not the employer's offer. StepStone prints it as "geschätzt für Vollzeit" (estimated for full time); is_estimate is true and type is Predicted on every row measured. The search row and the full ad carried the same range on 3 of 3 jobs that had one (for example 55,000 to 75,000 EUR a year).
salary (what is not there)No ad measured carried a salary from the employer in its structured data, and the figure StepStone shows behind "Gehalt anzeigen" needs a StepStone login, so it is not returned. The estimate is what StepStone shows every visitor.
total and countstotal is every job StepStone lists for the search, including the jobs it adds from nearby regions and similar titles. counts.main is the strict match; counts.regional and counts.semantic are the additions. Each row says which kind it is in match_type; exact_matches_only drops the additions.
home_officetrue when the ad is flagged for home office. Ads found with the remote-only filter carry the same flag as partial home office, so to get remote-only jobs use work_from_home=full on search.
job_id, company_idStepStone's own numeric ids, returned as strings. A job_id from search opens the same ad in job; a company_id opens that employer's list in company_jobs.
date_posted, publish_toWhen StepStone published the ad and when it is scheduled to go offline. Ads run about 30 days; a posted_within_days=30 filter changes nothing, so only 1, 3, 7 and 14 are offered.
facetsEvery filter value StepStone offers for the current search with its live count, and the parameter it feeds (for example sectors → sector_id, skills → skill_id). The count matches the filtered total: contract type permanent showed 473 and the filtered search returned 473.

StepStone has no French job board any more (stepstone.fr redirects to the group's corporate site), so France is not covered. StepStone's date sort does not change the order of results for visitors who are not logged in, so no sort parameter is offered; use posted_within_days instead.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/stepstone/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "software engineer",
    "location": "Berlin",
    "market": "de"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "stepstone",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 2530.3,
    "record_count": 25,
    "bytes": 160423,
    "cache_hit": false,
    "total": 737,
    "last_page": 30,
    "has_more": true,
    "upstream_requests": 1,
    "charged_credits": 2,
    "version": "1.0.0",
    "request_id": "e98316a2498b43f9",
    "queue_ms": 1.6,
    "fetched_at": "2026-11-03T13:40:21.083Z"
  },
  "data": {
    "jobs": [
      {
        "job_id": "14594592",
        "harmonised_id": "0fa82d6c-f971-4a31-aa30-cc10cf121e53",
        "title": "Software Engineer Test (m/w/d)",
        "url": "https://www.stepstone.de/stellenangebote--Software-Engineer-Test-m-w-d-Berlin-BIOTRONIK-Corporate-Services-SE--14594592-inline.html",
        "company_id": "222677",
        "company_name": "BIOTRONIK Corporate Services SE",
        "company_url": "https://www.stepstone.de/cmp/de/biotronik-corporate-services-se-222677/jobs",
        "company_logo_url": "https://www.stepstone.de/upload_DE/logo/3/logoBIOTRONIK-Corporate-Services-SE-222677DE-2207071149.gif",
        "is_anonymous": false,
        "location": "Berlin",
        "date_posted": "2026-10-30T19:01:08.42Z",
        "publish_from": "2026-10-30T19:01:08.42Z",
        "publish_to": "2026-11-29T19:01:08.42Z",
        "snippet": "BIOTRONIK ist einer der weltweit führenden Hersteller kardio- und endovaskulärer Implantate und Katheter. Gesucht wird ein Senior Software Engineer Test (m/w/d) zur Entwicklung von Test-Software und Testinfrastruktur für End-to-End Testaktivitäten. Ein abgeschlossenes IT-Studium oder vergleichbare Qualifikation, Erfahrung in Softwareentwicklung und Testautomatisierung sowie sichere Deutsch- und Englischkenntnisse werden vorausgesetzt.",
        "benefits": [
          "Gestaltungsspielraum beim Aufbau einer echten Plattform-Organisation nach dem Prinzip „Platform as a Product“ – mit direktem Einfluss auf Stabilität und Geschwindigkeit des gesamten Bereichs",
          "Zugehörigkeit zu einem internationalen Unternehmen, das mit seinen Medizinprodukten Leben rettet und Menschen hilft, ein längeres und besseres Leben zu führen",
          "Unbefristete Anstellung und attraktive Tarif-Gehälter (IG Metall) inkl. Tarifvertrags-Benefits, wie 30 Tage Urlaub"
        ],
        "home_office": true,
        "home_office_code": "2",
        "salary": {
          "min": 55000,
          "max": 75000,
          "exact": null,
          "currency": "EUR",
          "period": "annually",
          "type": "Predicted",
          "is_estimate": true,
          "text": null
        },
        "quick_apply": false,
        "labels": [],
        "match_type": "main",
        "is_sponsored": false,
        "is_highlighted": false,
        "is_top_job": false,
        "is_partner_job": false,
        "position": 1,
        "market": "de"
      },
      {
        "job_id": "14587029",
        "harmonised_id": "adbe2a28-724e-4af0-afc7-c7ea1cf1fafc",
        "title": "Software Engineer (w/d/m) Microsoft Dynamics 365",
        "url": "https://www.stepstone.de/stellenangebote--Software-Engineer-w-d-m-Microsoft-Dynamics-365-Oldenburg-Berlin-EWE-Go-GmbH--14587029-inline.html",
        "company_id": "218933",
        "company_name": "EWE Go GmbH",
        "company_url": "https://www.stepstone.de/cmp/de/ewe-go-gmbh-218933/jobs",
        "company_logo_url": "https://www.stepstone.de/upload_DE/logo/5/logoEWE-Go-218933DE-2002281110.gif",
        "is_anonymous": false,
        "location": "Oldenburg, Berlin",
        "date_posted": "2026-10-24T07:03:08Z",
        "publish_from": "2026-10-24T07:03:08Z",
        "publish_to": "2026-11-08T07:45:38.773Z",
        "snippet": "EWE Go ist ein E-Mobilitätsunternehmen, das ein flächendeckendes Schnellladenetzwerk in Deutschland aufbaut. Gesucht wird ein Software Engineer (w/d/m) Microsoft Dynamics 365, um ein unternehmensweites CRM-System zu entwickeln und zu skalieren. Mindestens fünf Jahre Erfahrung in Softwareentwicklung mit Fokus auf CRM, davon mindestens drei Jahre mit Microsoft Dynamics 365, sehr gute Kenntnisse in C#, .NET und TypeScript sowie sichere SQL- und REST-API-Kenntnisse werden vorausgesetzt.",
        "benefits": [
          "Wir suchen keine 100 %-Matches, sondern Menschen mit Potenzial, Neugier und Lust auf Lernen",
          "Deine persönliche Entwicklung fördern wir durch Workshops, Weiterbildungen sowie regelmäßiges Feedback",
          "Zusammenarbeit und Teamkultur sind bei uns keine Buzzwords, sondern werden aktiv gefördert und entwickelt"
        ],
        "home_office": true,
        "home_office_code": "2",
        "salary": {
          "min": 70000,
          "max": 95000,
          "exact": null,
          "currency": "EUR",
          "period": "annually",
          "type": "Predicted",
          "is_estimate": true,
          "text": null
        },
        "quick_apply": false,
        "labels": [],
        "match_type": "main",
        "is_sponsored": false,
        "is_highlighted": false,
        "is_top_job": false,
        "is_partner_job": false,
        "position": 2,
        "market": "de"
      },
      {
        "job_id": "14538729",
        "harmonised_id": "e87b4b54-f17c-4a81-8bbe-011b983615c4",
        "title": "Software Engineer (m/w/d) – Operations Research",
        "url": "https://www.stepstone.de/stellenangebote--Software-Engineer-m-w-d-Operations-Research-Muenster-Berlin-Koeln-flaschenpost-SE--14538729-inline.html",
        "company_id": "135518",
        "company_name": "flaschenpost SE",
        "company_url": "https://www.stepstone.de/cmp/de/flaschenpost-se-135518/jobs",
        "company_logo_url": "https://www.stepstone.de/upload_DE/logo/5/logoflaschenpost-SE-135518DE-2203221217.gif",
        "is_anonymous": false,
        "location": "Münster, Berlin, Köln",
        "date_posted": "2026-10-23T07:58:22.187Z",
        "publish_from": "2026-10-23T07:58:22.187Z",
        "publish_to": "2026-11-22T08:58:22.187Z",
        "snippet": "flaschenpost ist ein Sofortlieferdienst für Getränke und Lebensmittel in deutschen Metropolregionen. Gesucht wird ein Software Engineer (m/w/d) – Operations Research, um Python- und Julia-Services für die Last-Mile-Delivery zu entwickeln und zu betreiben. Ein Studium in Informatik, Mathematik oder Data Science, praktische Erfahrung mit Python-Services und Kubernetes sowie Kenntnisse in Optimierung, Azure und Observability-Tools werden vorausgesetzt.",
        "benefits": [
          "Work-Life Balance – Gestalte deinen Arbeitstag flexibel nach deinen Vorstellungen und genieße die Freiheit des mobilen Arbeitens",
          "Job-Ticket & Business-Bike – Damit nicht nur die Arbeitszeit flexibel ist",
          "Start-Up-Features – Genieße Freigetränke und die ein oder andere Partie Kicker oder Tischtennis als Ausgleich zur Arbeit"
        ],
        "home_office": true,
        "home_office_code": "2",
        "salary": {
          "min": 52000,
          "max": 70000,
          "exact": null,
          "currency": "EUR",
          "period": "annually",
          "type": "Predicted",
          "is_estimate": true,
          "text": null
        },
        "quick_apply": false,
        "labels": [
          "No cover letter required"
        ],
        "match_type": "main",
        "is_sponsored": false,
        "is_highlighted": false,
        "is_top_job": false,
        "is_partner_job": false,
        "position": 3,
        "market": "de"
      }
    ],
    "total": 737,
    "counts": {
      "family": 0,
      "main": 519,
      "recommended": 0,
      "regional": 68,
      "semantic": 150
    },
    "page": 1,
    "page_size": 25,
    "last_page": 30,
    "has_more": true,
    "market": "de",
    "query": {
      "query": "software engineer",
      "location": "Berlin",
      "radius": 30
    },
    "applied_filters": {},
    "facets": {
      "age": {
        "param": "posted_within_days",
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "unifiedSalary": {
        "param": "min_salary",
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "workFromHome": {
        "param": "work_from_home",
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "worktypes": {
        "param": "work_type",
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "disciplines": {
        "param": null,
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "contractTypes": {
        "param": "contract_type",
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "experiences": {
        "param": "experience",
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "skills": {
        "param": "skill_id",
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "categories": {
        "param": null,
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "sectors": {
        "param": "sector_id",
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "cities": {
        "param": null,
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "regions": {
        "param": null,
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "applicationMethod": {
        "param": "application_method",
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      },
      "detectedLanguages": {
        "param": "language",
        "values": [
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          },
          {
            "value": "[trimmed-depth]",
            "source_id": "[trimmed-depth]",
            "label": "[trimmed-depth]",
            "count": "[trimmed-depth]"
          }
        ]
      }
    }
  }
}
Actions

What the StepStone Jobs API does

ActionDescriptionConcrete use caseKey params
searchSearch live StepStone job ads by keyword and location with the site's own filters — radius, posted date, salary bucket, home office, full/part time, contract type, experience, quick apply, industry, skill and ad language. 25 jobs per page.Recruiting teams call search to search live StepStone job ads by keyword and location with the site's own filters.query, location, radius, market, page, ...
jobThe full job posting: every text section (intro, tasks, profile, benefits, extra info), company card, address with coordinates when published, posted and expiry dates, contract and work type, employment type, industry, benefits, StepStone's salary estimate.Labor-market analysts call job to get the full job posting.job_id, url, market
company_jobsAll open jobs of one employer on StepStone, 25 per page — the employer's own job list.Job boards call company_jobs to get all open jobs of one employer on StepStone, 25 per page.company_id, company_id, query, market, page
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/stepstone/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"software engineer","location":"Berlin","market":"de"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.stepstone.search with {"query":"software engineer","location":"Berlin","market":"de"}.
Use cases

Who uses this API and why

  • Collect new German, Austrian, Belgian and Dutch job ads every day by title, city and posting date for a job aggregator.
  • Track which companies are hiring for a skill or role and how many open jobs each has.
  • Build salary benchmarks from StepStone's salary estimates by title and city.
  • Generate B2B leads from employers that post many jobs in a sector or region.
  • Feed full job descriptions into skills and labour-market analysis.
FAQ

Questions developers ask before integrating

Which StepStone countries are covered?

Germany (stepstone.de), Austria (stepstone.at), Belgium (stepstone.be) and the Netherlands (stepstone.nl), chosen with market. Germany is by far the largest: a search for buchhalter in München listed 786 jobs on 32 pages, the same title in the Netherlands board returns a handful.

Do I get the full job description?

Yes, from job: every section StepStone shows (introduction, tasks, profile, what the employer offers, extra information) as clean text, plus the original HTML. Across 9 ads measured the text ran from about 1,600 to 4,300 characters; 6 of 6 ads in a field check had text sections, industry and employment type, 5 of 6 had map coordinates.

Is the salary the real salary?

It is StepStone's estimate, flagged with is_estimate: true. In a München accountant search 24 of 25 rows carried one. Across 150 search rows in six searches 85 carried an estimate; StepStone does not show a salary figure from the employer to visitors who are not logged in.

Which filters actually work?

All the filters offered narrow the results, measured on software engineer in Hamburg (512 jobs): posted in the last 7 days 284, minimum salary 60,000 398, partial home office 377, part time 57, permanent 473, no experience required 120, quick apply 53, IT and Internet industry 304, Python skill 88, ads in English 51, radius 100 km 698. A filter StepStone does not apply returns an error rather than an unfiltered list.

How do I page through all results?

Pass page=2, 3 and so on; each page holds 25 jobs. The answer gives last_page and has_more. Three pages in a row returned 75 different jobs with no repeats; the last page (32) returned the remaining 11 and has_more false, and a page beyond it returns an error naming the last page.

Can I get all jobs of one company?

Yes. Take company_id from any search row or job and call company_jobs. Measured: Schwarz Digits 33 open jobs, BIOTRONIK 12, every row from the requested employer. A keyword narrows it (Schwarz Digits with engineer: 15).

Does the result depend on where the request comes from?

No. The same search returned the same total, the same jobs and the same salary estimates in the same minute from four different countries.

What is the StepStone Jobs API?

StepStone Jobs API is a ReefAPI endpoint group for stepstone job ads in germany, austria, belgium and the netherlands: search with the site's own filters, full postings and every open job of an employer. It returns live JSON through POST requests under /stepstone/v1.

Is the StepStone Jobs API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. StepStone Jobs calls use the same shared credit balance as every other ReefAPI engine.

Do I need a StepStone Jobs login or account?

No login to StepStone Jobs is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the StepStone Jobs data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the StepStone Jobs API use?

StepStone Jobs actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call StepStone Jobs from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call stepstone actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the StepStone Jobs API a StepStone Jobs scraper?

It is the managed alternative to a DIY StepStone Jobs scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same stepstone job ads in germany, austria, belgium and the netherlands: search with the site's own filters, full postings and every open job of an employer back as clean JSON.

docs / stepstone

StepStone Jobs

StepStone job ads in Germany, Austria, Belgium and the Netherlands: search with the site's own filters, full postings and every open job of an employer.

base /stepstone/v13 endpoints
post/stepstone/v1/job3 credits

The full job posting: every text section (intro, tasks, profile, benefits, extra info), company card, address with coordinates when published, posted and expiry dates, contract and work type, employment type, industry, benefits, StepStone's salary estimate.

ParameterAllowed / rangeDescription
job_idoptional—The `job_id` of a search row. Either `job_id` or `url` is required.
urloptional—A StepStone job URL (any of the four sites). The market is taken from the URL's host.
market = deoptionalde · at · be · nlWhich StepStone site to read. stepstone.fr no longer runs a job board (it redirects to the group's corporate site), so France is not offered.
Try in playground →
post/stepstone/v1/company_jobs2 credits

All open jobs of one employer on StepStone, 25 per page — the employer's own job list.

ParameterAllowed / rangeDescription
company_idrequired—The employer's `company_id` from a search row or a job.
queryoptional—Optional keyword to narrow the employer's jobs.
market = deoptionalde · at · be · nlWhich StepStone site to read. stepstone.fr no longer runs a job board (it redirects to the group's corporate site), so France is not offered.
page = 1optional1–400Result page, 25 jobs per page.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.