Or APIjobroom.ams.or.at ↗
Search Austrian Public Employment Service job listings, retrieve full job details, and get autocomplete suggestions via the AMS eJob-Room API.
What is the Or API?
This API exposes 5 endpoints covering the Austrian Public Employment Service (AMS) eJob-Room job portal, including search_jobs for keyword-based job searches, get_job_detail for full posting information, and autocomplete_jobs for title suggestions. Responses include structured fields like location, employment type, working hours, required education, company name, and full job description in both HTML and plain text.
curl -X GET 'https://api.parse.bot/scraper/5f02fc55-2482-4bf3-ba03-fa500d5589c0/search_jobs?page=0&query=Software' \ -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 jobroom-ams-or-at-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.
"""AMS Austria eJob-Room: search jobs, get details, autocomplete titles."""
from parse_apis.ams_austria_ejob_room_api import AMS, JobNotFound
client = AMS()
# Autocomplete: discover valid job titles for a prefix
suggestions = client.jobsuggestions.search(query="Pflege", limit=5)
for s in suggestions:
print(s.title)
# Search jobs by keyword — limit caps total items fetched
job = client.jobs.search(query="Software", limit=1).first()
if job:
print(job.title, job.location, job.posted_date)
# Fetch full detail by order_number
try:
detail = client.jobdetails.get(order_number="17222577")
print(detail.company, detail.work_location, detail.education)
print(detail.description_text[:120])
except JobNotFound as exc:
print(f"Job not found: {exc}")
# Static info endpoints
terms = client.termsofuses.get()
print(terms.url)
reg = client.registrationinfos.get()
print(reg.info, reg.initial_page_url)
print("exercised: jobsuggestions.search / jobs.search / jobdetails.get / termsofuses.get / registrationinfos.get")
Full-text search over AMS eJob-Room job postings. Returns up to 10 results from the first results page. The query matches job titles, company names, locations, and descriptions. Results include metadata (location, employment type, working hours, posted date) and a text snippet. Each result carries link_params needed to fetch its full details via get_job_detail.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword (e.g., job title, location, company name). Supports German and English terms. |
{
"type": "object",
"fields": {
"items": "array of job objects with title, details_url, link_params, location, employment_type, working_hours, posted_date, snippet",
"query": "string, the search query used",
"total_results": "integer, total number of matching jobs"
},
"sample": {
"data": {
"items": [
{
"title": "Senior Embedded Software Engineer - Aerospace (m/f/d) (TTTech Computertechnik AG)",
"snippet": "Are you passionate about embedded software development...",
"location": "1040 Wien",
"details_url": "https://jobroom.ams.or.at/jobsuche/FreieSucheVollanzeige.jsp?index=0&pk=5498391_2_a4ae6a43-5a75-4545-b77e-b55b2d4&x_string=2026-06-11T12:17:10",
"link_params": {
"pk": "5498391_2_a4ae6a43-5a75-4545-b77e-b55b2d4",
"index": "0",
"x_string": "2026-06-11T12:17:10"
},
"posted_date": "14.05.2026",
"working_hours": "Ganztags",
"employment_type": "ArbeiterInnen/Angestellte (Dauerdienstverhältnis)"
}
],
"query": "Software Engineer",
"total_results": 1252
},
"status": "success"
}
}About the Or API
Searching and Retrieving Austrian Job Listings
The search_jobs endpoint accepts a query parameter supporting both German and English terms — useful for searches like "Softwareentwickler" or "nurse Vienna". Each result in the items array includes title, location, employment_type, working_hours, posted_date, a snippet, and a link_params object containing pk, index, and x_string values needed to fetch full details. The endpoint also returns total_results, giving you the count of all matching positions even though results are capped at 10 per call.
Job Detail and Autocomplete
get_job_detail accepts either an order_number (the AMS Inseratnummer, e.g. 17206928) or the pk/index/x_string triplet from search_jobs results. The response includes structured fields — Arbeitsort (work location), Ausbildung (required education), Arbeitszeit (working hours), Unternehmen (company name), Berufsgruppe (professional group), Dienstverhältnis (employment relationship), and order_number — alongside company_logo_url, description_html, and description_text for the full posting content. The autocomplete_jobs endpoint takes a text prefix and returns an array of matching job title strings, suitable for building search-as-you-type interfaces.
Additional Endpoints
get_terms_of_use returns the full HTML of the eJob-Room portal's Nutzungsbedingungen (terms of use) along with its URL. register_jobseeker_abroad returns the registration page URL, an informational message, and a text preview of the terms shown to job seekers living outside Austria — useful for apps that guide international users through the AMS registration process.
The Or API is a managed, monitored endpoint for jobroom.ams.or.at — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when jobroom.ams.or.at 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 jobroom.ams.or.at 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 Austrian public-sector and private job listings by location using the
Arbeitsortfield fromget_job_detail - Build a German-language job board with search-as-you-type using
autocomplete_jobssuggestions - Monitor new postings for a specific role by polling
search_jobswith a job title query and trackingposted_date - Classify jobs by professional category using the
Berufsgruppefield returned byget_job_detail - Display full bilingual job descriptions by extracting
description_textanddescription_htmlfrom detailed postings - Guide internationally-based job seekers through AMS registration using
register_jobseeker_abroadpage URL and terms preview - Enrich recruiting dashboards with structured employment type and working hours data from
employment_typeandArbeitszeitfields
| 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.
Does AMS (Arbeitsmarktservice Austria) offer an official developer API?+
What does get_job_detail return beyond what search_jobs already provides?+
search_jobs returns a summary per listing: title, location, employment type, working hours, posted date, and a short snippet. get_job_detail adds the full job description in both description_html and description_text, plus structured fields like Ausbildung (required education), Berufsgruppe (professional group), Dienstverhältnis (employment relationship type), the AMS order_number, and company_logo_url when available.Does search_jobs support pagination beyond the first page of results?+
search_jobs endpoint returns up to 10 results from the first page and reports the total count in total_results. Pagination beyond page one is not currently supported. You can fork the API on Parse and revise it to add offset or page parameters to retrieve subsequent result pages.Can I filter search results by employment type, working hours, or specific region without parsing results manually?+
search_jobs endpoint only accepts a free-text query parameter; there are no dedicated filter parameters for employment type, working hours, or region. Those fields are present in result objects so you can filter client-side. You can fork the API on Parse and revise it to add structured filter inputs.Are job listings from all Austrian provinces (Bundesländer) covered?+
location field in search results and Arbeitsort in detail responses reflect the posting's stated location, but there is no built-in filter to restrict results by province. You can fork the API on Parse and revise it to add a region-specific filter endpoint.