How to scrape jobs data from Adzuna using the Minexa API
- Minexa.ai

- 15 hours ago
- 4 min read
Collecting job listings from Adzuna manually means opening pages, copying rows, and repeating that across dozens of search result pages. The Minexa API replaces that entire process with a single trained scraper and a POST request.
This guide walks through how to extract structured job data from adzuna.com.au using the Minexa API, covering the full workflow from training the scraper to calling the API and working with the fields it returns.
Before and after: navigating to Adzuna
Before: You open the Adzuna search results page for a role and location, and see a list of job cards with no easy way to extract them in bulk.
After: You open the same page with the Minexa Chrome extension active, and the extension immediately recognises the repeating job card structure on the page.
The starting URL used here is the Queensland data scientist search: https://www.adzuna.com.au/search?q=data+scientist&w=qld. Any Adzuna search URL with the same page structure will work with the same trained scraper.
Before and after: confirming detection
Before: You have no way to know whether the extension has picked up the right container or whether pagination will be followed correctly across pages.
After: The extension popup shows a clear confirmation screen. You click the button confirming you are on the right page, and the extension proceeds to detect pagination automatically.
The extension then shows which pagination method it detected and asks you to confirm before continuing. For Adzuna, it identifies the next page button and confirms whether pagination handling is needed for your job.
Note: when using the Minexa API directly, pagination is not handled automatically. You will need to supply each page URL explicitly or write a JS scenario that handles the click logic. Automatic pagination is a feature of the Chrome extension workflow only.
Before and after: choosing scraping depth
Before: You only see the data visible on the list page and have no structured way to access the full job description from each individual listing page.
After: The extension gives you the option to scrape the list only, or to follow each job link and extract detail page content as well. For most job market analysis tasks, the list data is sufficient to start.
Before and after: container selection and scraper creation
Before: The page is a wall of HTML with no clear indication of where the job card data begins or ends for each result.
After: The extension highlights the full job listing container automatically. You confirm the selection and click to create the scraper. The scraper is assigned a stable ID you will use in every API call going forward.
Once created, the extension shows all extracted data points with navigation controls so you can review every column before committing.
Before and after: the API request
Before: You have a trained scraper but no clear way to trigger it programmatically or integrate it into a pipeline.
After: The extension generates ready-to-use JSON and Python code samples. You copy the scraper ID and use the https://api.minexa.ai/data endpoint to pull structured job data at scale.
What the extracted data looks like
Each row returned by the API represents one job listing. Here are two example records from the Adzuna Queensland data scientist search, with key fields shown:
[
{
"company_name": "RPMGLOBAL",
"location": "REMOTE",
"location_2": "BRISBANE, QUEENSLAND, 4000",
"status": "TOP MATCH",
"data_aid": "5693927795",
"job_link": "https://www.adzuna.com.au/details/5693927795",
"job_id": "fav-job-5693927795",
"job_details": "RPMGlobal is seeking a highly skilled Data Scientist..."
},
{
"company_name": "VIRGIN AUSTRALIA",
"location_2": "QUEENSLAND",
"status": "CLOSING SOON",
"data_aid": "5750624625",
"job_link": "https://www.adzuna.com.au/details/5750624625",
"job_id": "fav-job-5750624625",
"company_listing": [
{ "value": "VIRGIN AUSTRALIA", "tag": "a" },
{ "value": "View 44 jobs by Virgin Australia", "tag": "a", "attribute": "title" }
]
}
]Three fields worth understanding in detail:
data_aid holds a stable numeric identifier per job listing. Because this value is tied to the DOM element rather than the job title or URL, it is the most reliable key for deduplication when running the same scraper across multiple pages or on a recurring schedule via your own cron jobs.
company_listing is a structured array of typed objects. When present, it encodes the company profile URL on Adzuna and a title attribute that contains the total number of active jobs for that employer. This means you can aggregate listings by employer and identify high-volume hirers without visiting any additional pages.
status surfaces urgency labels such as TOP MATCH and CLOSING SOON directly in the list data. These labels are encoded in the DOM as styled span elements, and the Minexa API captures the text value per listing. Downstream, you can filter or sort by this field to prioritise records without any secondary page visit.
Before and after: running the job and exporting
Before: Data sits in the API response as raw JSON with no immediate path to a spreadsheet or a database-ready file.
After: Results are available for export to Excel or JSON directly from the Minexa interface, or you handle the response in your own pipeline using the structured JSON output from the API.
If you need to run the scraper across many different Adzuna search URLs, the practical approach is to set up your own cron job and pass each URL to the API endpoint in sequence. The scraper ID stays the same across all calls as long as the page structure matches the one used during training.
For a related walkthrough covering a similar jobs data extraction use case, see: How to scrape jobs data from Apna using the Minexa.ai API.

Comments