Indeed APIde.indeed.com ↗
Search job listings, retrieve full job details, and pull company profiles from Indeed Germany (de.indeed.com) via 3 structured REST endpoints.
What is the Indeed API?
The Indeed Germany API provides access to de.indeed.com through 3 endpoints covering job search, individual job details, and company profiles. The search_jobs endpoint returns up to 15 listings per page with fields including job title, company name, location, salary range, and a direct job URL. Downstream endpoints let you fetch full HTML job descriptions and structured company metadata including ratings, industry, and headquarters.
curl -X GET 'https://api.parse.bot/scraper/56549dc3-d1dc-45f3-9a49-116ba5444de0/search_jobs?query=Software+Engineer&start=0&location=Berlin' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace de-indeed-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.indeed_germany_job_scraper_api import Indeed, JobSummary, Job, Company
indeed = Indeed()
# Search for Software Engineer jobs in Berlin
for job_summary in indeed.jobsummaries.search(query="Software Engineer", location="Berlin"):
print(job_summary.job_title, job_summary.company_name, job_summary.location, job_summary.salary_range)
# Get full job details including description
job_detail = job_summary.details()
print(job_detail.job_title, job_detail.location, job_detail.contract_type)
# Look up the company profile if slug is available
if job_detail.company_details.company_slug:
company = indeed.companies.get(company_slug=job_detail.company_details.company_slug)
print(company.company_name, company.rating, company.industry, company.review_count)
break
Full-text search for job listings on Indeed Germany. Matches query against job titles, keywords, and company names. Returns up to 15 jobs per call; manually advance via start offset (increments of 10). Each result includes basic metadata; use get_job_details for the full description.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Job title, keywords, or company name to search for |
| start | integer | Pagination offset (increments of 10, e.g. 0, 10, 20) |
| location | string | Job location (city, state, or zip code) |
{
"type": "object",
"fields": {
"jobs": "array of job listing objects with job_key, job_title, company_name, location, salary_range, posted_at, job_types, and job_url",
"start": "integer pagination offset used",
"total_count": "integer total number of matching jobs"
},
"sample": {
"data": {
"jobs": [
{
"job_key": "e811a7e3fad5693b",
"job_url": "https://de.indeed.com/viewjob?jk=e811a7e3fad5693b",
"location": "Berlin",
"job_title": "DevOps Engineer (m/w/d) in der IT-Beratung",
"job_types": [],
"posted_at": "vor 30+ Tagen",
"company_name": "PTA GmbH",
"salary_range": null
}
],
"start": 0,
"total_count": 1152
},
"status": "success"
}
}About the Indeed API
Job Search
The search_jobs endpoint accepts a query string (job title, keywords, or company name) and an optional location parameter. Results come back paginated using a start offset in increments of 10, and each response includes total_count so you can calculate how many pages to walk. Each job object in the jobs array carries job_key, job_title, company_name, location, salary_range, posted_at, job_types, and job_url. The job_key is the identifier you pass to the next endpoint.
Job Details
Passing a job_key to get_job_details retrieves the full record for a single posting. Beyond what search returns, this endpoint adds contract_type (an array of German employment type strings such as Vollzeit or Teilzeit), a company_details object containing the company name, company_slug, and logo_url, and a job_description field that contains the full HTML-formatted description text. The company_slug value is what you need to call the third endpoint.
Company Profiles
The get_company_overview endpoint takes a company_slug — the path segment Indeed uses after /cmp/ in its company URLs — and returns a structured profile. Fields include rating (a numeric score out of 5), founded, revenue, industry, company_size, headquarters (with an address field), website_url (an object with both display text and url), and a description string. Fields like founded, revenue, and headquarters may be null if the company has not populated them on Indeed.
The Indeed API is a managed, monitored endpoint for de.indeed.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when de.indeed.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official de.indeed.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Aggregate German-market job listings by keyword and location to build a niche job board.
- Monitor salary_range values across job postings to track compensation trends by role or city.
- Pull contract_type arrays from job details to filter full-time versus part-time openings.
- Enrich a recruiter CRM with company ratings, industry, and headquarters data via get_company_overview.
- Track posted_at timestamps to measure how quickly specific roles fill in German cities.
- Cross-reference company_size and revenue fields when qualifying employer targets for B2B outreach.
- Build job alert tooling that pages through total_count results and surfaces new listings by comparing job_key sets.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.