top of page

How to extract jobs data from Seek using the Minexa API

Seek is one of the largest job boards in Australia, and its listings page for Perth alone can surface hundreds of roles across industries. If you need that data in a structured format for analysis, hiring intelligence, or market research, copying it manually is not a realistic option.

This guide covers how to extract jobs data from Seek using the Minexa API developer workflow: train a scraper once using the Minexa Chrome extension, get a stable scraper_id, then call the API to extract data at scale from any number of Seek listing pages.

Why use the API instead of the extension alone

The Minexa Chrome extension is sufficient for one-off extractions. The API workflow becomes the right choice when you need to feed extracted data directly into a pipeline, trigger extractions programmatically, or pass a large list of URLs in a single request. You train the scraper visually once, then the API takes over from there.

One thing worth noting for API usage: pagination is not handled automatically the way it is in the extension. When calling the API, you supply the list of URLs you want to process. If Seek paginates results across multiple pages, you will need to generate those page URLs yourself and pass them in the request. A cron job works well for this if you are running extractions on a recurring basis.

Step 1: Train the scraper on Seek

Open au.seek.com/jobs/in-All-Perth-WA in Chrome with the Minexa extension installed. Click the extension icon and confirm you are on the right page.

Minexa will detect the pagination structure on the page and prompt you to confirm before continuing.

After confirming pagination, choose whether to scrape the listing page only or also follow each job link to extract detail page data. For most API use cases, the list-only option gives you job titles, company names, locations, and listing URLs without the overhead of following hundreds of individual links.

Select the simple scraping scenario and let Minexa identify the data container automatically.

Once the container is confirmed, Minexa extracts all detected data points and shows them as columns you can review.

Step 2: Get your scraper_id and API code

Click the API request option in the extension. Minexa generates a ready-to-use JSON request body and a Python snippet. The key value here is your scraper_id, which is the stable identifier for this scraper configuration. You will use it in every API call going forward.

Step 3: Call the Minexa API

The extraction endpoint is https://api.minexa.ai/data. Pass your scraper_id, the columns you want using a top_n selector, and the list of Seek URLs to process.

import requests

url = "https://api.minexa.ai/data"
headers = {"x-api-key": "YOUR_API_KEY"}

payload = {
  "scraper_id": 6284,
  "columns": {"top_n": "top_40"},
  "urls": [
    "https://au.seek.com/jobs/in-All-Perth-WA",
    "https://au.seek.com/jobs/in-All-Perth-WA?page=2"
  ],
  "scraping_params": {
    "js_render": true
  }
}

response = requests.post(url, json=payload, headers=headers)
print(response.json())

Seek is a JavaScript-rendered site, so js_render: true is required. This may consume more than one credit per page depending on the complexity of the page at the time of extraction.

What the output looks like

Each extracted row corresponds to one job listing. Here is a sample of what the API returns, with metadata fields removed for clarity:

[
  {
    "company_name": "Fortescue",
    "job_title": "Senior Data Analyst",
    "location": "Perth WA",
    "listing_url": "https://au.seek.com/job/123456789"
  },
  {
    "company_name": "Rio Tinto",
    "job_title": "Infrastructure Engineer",
    "location": "Perth WA",
    "listing_url": "https://au.seek.com/job/987654321"
  }
]

Each field is tied to a specific position in the page structure. If a value is not present on a given listing, the field returns null rather than a substituted or inferred value. This makes the output predictable and safe to pipe directly into a database or analysis tool without a validation layer in between.

Reusing the scraper across pages

Once trained, the scraper works on any Seek listing page that shares the same structure. You can pass different location or keyword filter URLs and the same scraper_id applies. There is no need to retrain for each new search.

Video walkthrough

The full tutorial below covers every step from opening the extension on Seek through to the completed scraping job and exported data.

The Minexa API documentation covers all available parameters, authentication, and response formats in detail. Start with the extension to train your scraper, grab the generated scraper_id, and your extraction pipeline is ready to run.

Recent Posts

See All

Comments


Heading 2

bottom of page