SEEK APIseek.com.au ↗
Search and retrieve job listings from SEEK Australia. Get job titles, companies, locations, salaries, work types, and full descriptions via 2 endpoints.
What is the SEEK API?
The SEEK Australia API gives developers programmatic access to job listings on seek.com.au through 2 endpoints. Use search_jobs to query by keyword and optional location, returning paginated result sets with job summaries, or call get_job_details with a numeric job ID to retrieve the full listing — including salary, work type, classification, HTML description, and live status.
curl -X GET 'https://api.parse.bot/scraper/ed567ab8-0364-4d7a-9121-f4de258d4b32/search_jobs?page=1&keywords=software+engineer&location=Sydney&page_size=5' \ -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 seek-com-au-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.
"""Walkthrough: SEEK Australia Jobs SDK — search listings, drill into details."""
from parse_apis.seek_australia_jobs_api import Seek, JobNotFound
client = Seek()
# Search for software engineer jobs in Sydney, capped at 5 results.
for job_summary in client.jobsummaries.search(keywords="software engineer", location="Sydney", limit=5):
print(job_summary.title, "|", job_summary.company, "|", job_summary.location)
# Drill into the first result's full details via the summary → detail nav op.
summary = client.jobsummaries.search(keywords="data analyst", limit=1).first()
if summary:
detail = summary.details()
print(detail.title, detail.company, detail.work_types, detail.listed_at)
print("Classifications:", detail.classifications)
print("Bullet points:", detail.bullet_points)
# Direct fetch by known job ID via the root jobs collection.
try:
job = client.jobs.get(id="92619307")
print(job.title, job.salary, job.is_expired)
except JobNotFound as exc:
print(f"Job not found: {exc.job_id}")
print("exercised: jobsummaries.search / summary.details / jobs.get")
Full-text search over SEEK Australia job listings. `keywords` matches job title and description; optional `location` filters by city or region. Returns paginated results ordered by relevance with featured listings first. Each result includes a summary (title, company, location, salary teaser); full descriptions require a separate get_job_details call per job.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number (1-indexed). |
| keywordsrequired | string | Search keywords (e.g. 'software engineer', 'project manager', 'data analyst'). |
| location | string | Location filter (e.g. 'Sydney', 'Melbourne'). Omitting returns jobs from all locations. |
| page_size | integer | Results per page (max 20). |
{
"type": "object",
"fields": {
"jobs": "array of job listing summary objects",
"page": "integer current page number",
"keywords": "string search keywords used",
"page_size": "integer results per page",
"total_count": "integer total number of matching jobs"
},
"sample": {
"data": {
"jobs": [
{
"id": "92619307",
"title": "Software Engineer",
"salary": "",
"teaser": "Seeking a skilled Software Engineer.",
"company": "Container Deposit Systems",
"location": "Thebarton, Adelaide SA",
"work_types": [
"Full time"
],
"is_featured": true,
"listed_date": "1d ago",
"classifications": [
{
"classification": "Information & Communication Technology",
"sub_classification": "Engineering - Software"
}
]
}
],
"page": 1,
"keywords": "software engineer",
"page_size": 5,
"total_count": 1938
},
"status": "success"
}
}About the SEEK API
Searching for Jobs
The search_jobs endpoint accepts a required keywords parameter (e.g. 'data analyst', 'nurse') and an optional location string such as 'Sydney' or 'Melbourne'. Results are paginated using page (1-indexed) and page_size (up to 20 per page). The response includes total_count so you can calculate how many pages exist, plus an array of job summary objects covering title, company, location, and listing ID. Featured listings appear first in relevance-ordered results.
Fetching Full Job Details
Pass the numeric job_id from a search_jobs result into get_job_details to retrieve the complete listing. The response exposes title, company, location, salary (empty string when the employer hasn't disclosed it), work_types (e.g. 'Full time', 'Contract'), listed_at as an ISO 8601 datetime, abstract, and the full job description. The is_expired boolean and status field ('Active' or 'Expired') indicate whether a listing is still open. The endpoint returns a stale_input signal with kind input_not_found when the job ID no longer exists.
Coverage and Scope
Coverage is limited to seek.com.au — SEEK's Australian market. The API returns publicly visible listing data: title, employer, location, salary range (where disclosed), work type, and classification. Data that requires a candidate account — saved jobs, applications, or recruiter contact details — is not exposed.
The SEEK API is a managed, monitored endpoint for seek.com.au — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when seek.com.au 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 seek.com.au 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 software engineering jobs in Melbourne filtered by keyword and paginate through total_count results
- Monitor new listings in a specific trade category by polling search_jobs daily and comparing listed_at timestamps
- Build a salary benchmarking tool using the salary field across hundreds of job_details responses for a given keyword
- Track whether specific job IDs are still active using the is_expired boolean from get_job_details
- Populate a job board focused on Australian healthcare or finance roles by filtering search results by keyword and location
- Extract work_types distribution across a keyword search to understand full-time vs. contract demand in a field
| 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.