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

SEEK API & Scraper

The SEEK API returns Australian job listings as clean JSON.

4 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.

The primary search endpoint returns jobs with id, title, URL, company, location(s), salary label, currency and work type, and you can pull a detail, a company's jobs and a classification. It is built for recruiting tools, Australian labor-market analysts and job boards that need SEEK data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Reference

The same job in search and in detail is not the same shape

search and detail read different SEEK surfaces, and several fields change name, type or precision between them. If you merge the two into one record — which most people do — this is the table you need. Everything below is from measured responses.

FieldIn searchIn detail
work arrangementwork_arrangement — singular, a string ("Hybrid")work_arrangements — plural, an array, and empty on the measured job
classifications{classification, classification_id, subclassification, subclassification_id} — the ids you filter with{label: "Developers/Programmers (Information & Communication Technology)"} — no ids at all
posted_datesecond precision: 2026-08-21T03:45:50Zmillisecond precision: 2026-06-22T01:42:44.196Z
locationlocation string plus locations[] with country_codebroken out: country, country_code, state, suburb, post_code, region
expirynot presentexpires_at, is_expired, status
employercompany, advertiser_id, company_urlthe same, plus company_profile{name, slug, industry, size, website, rating, review_count, url}
descriptionteaser and bullet_points onlydescription_text, description_html and abstract

Measured SEEK classification ids: 6281 Information & Communication Technology with subclassification 6287 Developers/Programmers, and 1211 Healthcare & Medical with 6341 Nursing - Educators & Facilitators. These only come back from search, so harvest one before you use the classification or subclassification filters.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/seek/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "keywords": "developer",
    "location": "Sydney NSW"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "seek",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 688.4,
    "record_count": 20,
    "bytes": 33072,
    "cache_hit": false,
    "completeness_pct": 100,
    "stop_reason": "limit_reached",
    "pagination": {
      "page": 1,
      "total_pages": 104,
      "has_more": true,
      "next_page": 2
    },
    "charged_credits": 1,
    "version": "1.0.0"
  },
  "data": {
    "jobs": [
      {
        "job_id": "94789916",
        "title": "Full Stack Developer (4+ years): AI‑Augmented",
        "url": "https://www.seek.com.au/job/94789916",
        "company": "Elan Projects PTY LTD",
        "advertiser_id": "60042109",
        "location": "Manly, Sydney NSW",
        "locations": [
          {
            "label": "[trimmed-depth]",
            "country_code": "[trimmed-depth]"
          }
        ],
        "salary_label": "$140,000 – $160,000 per year",
        "currency": null,
        "work_types": [
          "Full time"
        ],
        "work_arrangement": "Hybrid",
        "classifications": [
          {
            "classification": "[trimmed-depth]",
            "classification_id": "[trimmed-depth]",
            "subclassification": "[trimmed-depth]",
            "subclassification_id": "[trimmed-depth]"
          }
        ],
        "bullet_points": [
          "Interesting work - lots of variety",
          "Fast-moving, small team of excellect technical crew (no painful beaurocracy)",
          "Cool customers leading the world in event technology and product development"
        ],
        "teaser": "Build the software layer behind our managed event-internet hardware fleet: dashboards, monitoring, and customer tools.",
        "posted_date": "2026-09-22T02:26:02Z",
        "posted_relative": "1d ago",
        "is_featured": true,
        "display_type": "promoted",
        "logo_url": "https://bx-branding-gateway.cloud.seek.com.au/7393696e-7cd3-49fc-99df-7be2bfc31d3a.1/jdpLogo",
        "company_url": null,
        "role_id": "full-stack-developer"
      },
      {
        "job_id": "94835917",
        "title": "Staff Full Stack Engineer (React, Next.js, TypeScript, GraphQL)",
        "url": "https://www.seek.com.au/job/94835917",
        "company": "Software at Scale",
        "advertiser_id": "62233981",
        "location": "Sydney NSW",
        "locations": [
          {
            "label": "[trimmed-depth]",
            "country_code": "[trimmed-depth]"
          }
        ],
        "salary_label": "",
        "currency": null,
        "work_types": [
          "Contract/Temp"
        ],
        "work_arrangement": "Hybrid",
        "classifications": [
          {
            "classification": "[trimmed-depth]",
            "classification_id": "[trimmed-depth]",
            "subclassification": "[trimmed-depth]",
            "subclassification_id": "[trimmed-depth]"
          }
        ],
        "bullet_points": [
          "Empower your career",
          "Next gen engineering",
          "Solve real problems"
        ],
        "teaser": "Next gen development",
        "posted_date": "2026-09-23T11:41:47Z",
        "posted_relative": "9h ago",
        "is_featured": true,
        "display_type": "promoted",
        "logo_url": "https://bx-branding-gateway.cloud.seek.com.au/da3f656b-f414-4b4f-8e2f-e53487846c56.1/jdpLogo",
        "company_url": null,
        "role_id": "full-stack-software-engineer"
      },
      {
        "job_id": "94754876",
        "title": "Graduate Level Full Stack Developer",
        "url": "https://www.seek.com.au/job/94754876",
        "company": "Red Dirt Equities Pty Ltd",
        "advertiser_id": "63786454",
        "location": "Sydney NSW",
        "locations": [
          {
            "label": "[trimmed-depth]",
            "country_code": "[trimmed-depth]"
          }
        ],
        "salary_label": "$9,000 – $10,000 per month",
        "currency": null,
        "work_types": [
          "Full time"
        ],
        "work_arrangement": "Hybrid",
        "classifications": [
          {
            "classification": "[trimmed-depth]",
            "classification_id": "[trimmed-depth]",
            "subclassification": "[trimmed-depth]",
            "subclassification_id": "[trimmed-depth]"
          }
        ],
        "bullet_points": [],
        "teaser": "Launch your dev career! Mentorship, continuous learning & great work-life balance in Sydney.",
        "posted_date": "2026-09-20T21:35:02Z",
        "posted_relative": "3d ago",
        "is_featured": false,
        "display_type": "standard",
        "logo_url": null,
        "company_url": null,
        "role_id": "full-stack-developer"
      }
    ],
    "total": 2072
  }
}
Actions

What the SEEK API does

ActionDescriptionConcrete use caseKey params
searchSearch SEEK (seek.com.au) job postings by keyword with optional location, salary range, work-type, work-arrangement (remote/hybrid/on-site), date-posted, classification and sort filters. Returns up to 32 jobs per page with title, company, salary, location, dates and a teaser.Recruiting teams call search to search SEEK (seek.com.au) job postings by keyword with optional location, salary range, work-….keywords, location, job_type, work_arrangement, salary_from, ...
detailFull posting for one SEEK job by job_id (or a SEEK job URL): title, company, salary, location breakdown (suburb/state/postcode/country), full HTML + plain-text description, work types, work arrangement, classifications, bullet points, posted & expiry dates, apply/share link, and the employer's company profile (industry, size, website, rating, review count).Labor-market analysts call detail to get full posting for one SEEK job by job_id (or a SEEK job URL).job_id, url
company-jobsAll public job postings at a specific company on SEEK. Pass the company's numeric advertiser id (the `advertiser_id` field on any search/detail result), its SEEK company slug, a full SEEK company URL, or its name; optionally narrow with the same keyword/location/salary/work-type/date filters as search.Job boards call company-jobs to get all public job postings at a specific company on SEEK.company, keywords, location, job_type, work_arrangement, ...
classificationBrowse SEEK jobs by classification/category — either a SEEK classification numeric id (e.g. 6281 = Information & Communication Technology) or a category slug ('information-communication-technology', 'healthcare-medical', 'trades-services', 'accounting', 'sales', 'education-training'). Optionally scope by location and the same salary/work-type/date filters as search.Sales intelligence teams call classification to get browse SEEK jobs by classification/category.classification, location, job_type, work_arrangement, salary_from, ...
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/seek/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"keywords":"developer","location":"Sydney NSW"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.seek.search with {"keywords":"developer","location":"Sydney NSW"}.
Use cases

Who uses this API and why

  • Australian job boards call search to aggregate SEEK listings by role and location.
  • Labor-market analysts use classification and search to measure demand across sectors.
  • Recruiting tools use company-jobs to track a specific employer's open roles.
FAQ

Questions developers ask before integrating

Why is currency null and salary just a string?

Because SEEK publishes what the employer typed, and there is no structured salary on the posting. Three measured salary_label values: "$90,000 – $120,000 per year", "Up to $180K (inc super)" and "Educator (Major) + Super + Salary Packaging" — the third contains no number at all. currency came back null on every one. Do not regex a number out of it and store it as pay; if you need a numeric band, use the salary_from and salary_to search filters, which run against SEEK's own indexed range rather than this text.

What does 'inc super' mean in an Australian salary?

Superannuation — the compulsory employer retirement contribution — and whether a quoted figure includes it changes the real base by a meaningful margin. Australian ads are inconsistent about it and salary_label is the only place it is ever stated, in free text. If you are comparing SEEK salaries against another market, treat an "inc super" figure and a bare figure as non-comparable rather than normalizing them.

Can I still fetch a job that has closed?

Yes, and this catches people out. A measured detail call on job_id 92851167 returned a complete posting — title, full description, salary, employer profile — together with expires_at 2026-07-22T01:42:00.000Z, is_expired true and status "Expired". Nothing about the response signals failure. Read is_expired or status before you show a job to a candidate; a full description is not evidence the role is open.

How many jobs come back per page, and how do I page correctly?

Do not hard-code a page size. Two measured searches each returned 20 jobs on page 1, with meta.pagination reporting total_pages 27 against a total of 524 for one query and 18 for the other. Page until meta.pagination.has_more is false and follow next_page rather than computing offsets yourself. total is SEEK's own match count for the query and is the cheap way to size a market before you page anything.

How do I pull every role at one employer?

Use company-jobs with the advertiser_id from any search or detail result — measured value 2852 for DWS Limited. It also accepts the SEEK company slug, a full SEEK company URL or the plain company name, and takes the same keyword, location, salary, work-type and date filters as search, so you can ask narrower questions like every part-time nursing role at one hospital group. advertiser_verified on a detail response tells you whether SEEK has verified that employer.

Which countries does this cover?

SEEK's Australian board, with New Zealand locations resolving through the same free-text location field. Salaries are AUD. Locations sharpen considerably when you include the state suffix — "Sydney NSW" and "Melbourne VIC" resolved cleanly in measured calls, and the response echoes country_code AU on each match so you can confirm what was matched.

Which fields commonly come back null?

More than you would expect on a live posting. Measured on real jobs: currency null, logo_url null, company_url null on search rows, share_link null on detail, posted_relative null on detail (it is populated on search rows as "5d ago"), and company_profile.size, rating and review_count all null. bullet_points is frequently an empty array. Treat all of these as absent data rather than errors, and never branch on truthiness alone when the meaningful value could be 0.

Can I filter by remote work?

Yes — work_arrangement accepts onsite, remote or hybrid, and a bad value is silently ignored rather than rejected, so a typo returns unfiltered results that look correct. Note the asymmetry with the response: search rows carry work_arrangement as a single string (measured "Hybrid"), while detail returns work_arrangements as an array that was empty on the measured job. Filter on the search side and trust the search row's value.

What is the SEEK API?

SEEK API is a ReefAPI endpoint group for seek It returns live JSON through POST requests under /seek/v1.

Is the SEEK API free to try?

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

Do I need a SEEK login or account?

No login to SEEK 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 SEEK 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 SEEK API use?

SEEK actions currently cost 1 credit per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call SEEK from an AI assistant or MCP client?

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

docs / seek

SEEK

SEEK

base /seek/v14 endpoints
post/seek/v1/detail1 credit

Full posting for one SEEK job by job_id (or a SEEK job URL): title, company, salary, location breakdown (suburb/state/postcode/country), full HTML + plain-text description, work types, work arrangement, classifications, bullet points, posted & expiry dates, apply/share link, and the employer's company profile (industry, size, website, rating, review count).

ParameterAllowed / rangeDescription
job_idoptional—SEEK job ID — the number in the job URL (seek.com.au/job/<job_id>) or `job_id` from search.
urloptional—Alternatively a full SEEK job URL.
Try in playground →
post/seek/v1/company-jobs1 credit

All public job postings at a specific company on SEEK. Pass the company's numeric advertiser id (the `advertiser_id` field on any search/detail result), its SEEK company slug, a full SEEK company URL, or its name; optionally narrow with the same keyword/location/salary/work-type/date filters as search.

ParameterAllowed / rangeDescription
companyrequired—The employer — its SEEK numeric advertiser id (best; the `advertiser_id` on any search result), a SEEK company slug, a full SEEK company URL, or the company name (resolved to a slug automatically).
keywordsoptional—Optional: also filter the company's jobs by keyword.
locationoptional—Australian/NZ location to search in — a city, suburb or city+state ('Sydney NSW', 'Melbourne VIC', 'Brisbane QLD', 'Perth WA'). Free text; the state suffix sharpens the match.
job_typeoptionalfull_time · part_time · contract · casualRestrict to one work type.
work_arrangementoptionalonsite · remote · hybridFilter by working arrangement.
salary_fromoptional0–Minimum annual salary in AUD (e.g. 100000).
salary_tooptional0–Maximum annual salary in AUD (e.g. 150000).
date_postedoptionaltoday · last3days · lastweek · lasttwoweeks · lastmonthOnly jobs listed within this window.
sort = relevanceoptionalrelevance · dateResult ordering.
page = 1optional1–500Result page (32 jobs per page). Page until meta.pagination.total_pages.
Try in playground →
post/seek/v1/classification1 credit

Browse SEEK jobs by classification/category — either a SEEK classification numeric id (e.g. 6281 = Information & Communication Technology) or a category slug ('information-communication-technology', 'healthcare-medical', 'trades-services', 'accounting', 'sales', 'education-training'). Optionally scope by location and the same salary/work-type/date filters as search.

ParameterAllowed / rangeDescription
classificationrequired—SEEK classification — numeric id (e.g. '6281' = Information & Communication Technology, '1203' = Healthcare & Medical) or a category slug ('information-communication-technology', 'healthcare-medical', 'trades-services', 'accounting').
locationoptional—Australian/NZ location to search in — a city, suburb or city+state ('Sydney NSW', 'Melbourne VIC', 'Brisbane QLD', 'Perth WA'). Free text; the state suffix sharpens the match.
job_typeoptionalfull_time · part_time · contract · casualRestrict to one work type.
work_arrangementoptionalonsite · remote · hybridFilter by working arrangement.
salary_fromoptional0–Minimum annual salary in AUD (e.g. 100000).
salary_tooptional0–Maximum annual salary in AUD (e.g. 150000).
date_postedoptionaltoday · last3days · lastweek · lasttwoweeks · lastmonthOnly jobs listed within this window.
sort = relevanceoptionalrelevance · dateResult ordering.
page = 1optional1–500Result page (32 jobs per page). Page until meta.pagination.total_pages.
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.