This tutorial shows how to scrape SEEK jobs from known detail-page URLs into CSV with the SEEK Job Details Scraper by URL template for UScraper. You will prepare URLs, import the workflow, set the export path, run a small validation batch, and audit blocked or unavailable pages.
Before you start
Prerequisites, URL list, and access checks
You need UScraper installed as a local desktop app, the SEEK Job Details Scraper by URL template, a short list of SEEK job detail URLs, and a folder for CSV exports. This workflow is built for curated detail pages: saved roles, a spreadsheet of target ads, a manual shortlist, or URLs collected by another listing workflow.
Start with two to five URLs. Open one in the browser profile you plan to use and confirm that the job page loads normally. If SEEK shows a login prompt, bot challenge, unavailable job, or redirect, treat that URL as a test failure.
Review the current SEEK Developer documentation, Job Posting use case, SEEK Website Terms and Conditions, and robots.txt before automating collection. The official API path is for recruitment-software integrations with SEEK's marketplace; a scraper is a separate, supervised export workflow and does not grant reuse rights by itself.
Browser access is not permission to automate, resell, republish, or train models on job data. Keep runs modest, document the purpose of collection, and stop when access controls appear.
Workflow anatomy
What the SEEK job details scraper does
The JSON export is the source of truth for the workflow. In plain English, it follows this path:
Set Window Size -> Navigate URL list -> Wait for Page Load
-> Wait for body -> Inject JavaScript -> Sleep
-> Structured Export -> Loop Continue
The injected JavaScript identifies the job ID, checks embedded page data, tries job-data responses when available, and exposes normalized fields to Structured Export. If a page is blocked or unavailable, scrape_status explains the row.
| Workflow block | Purpose | Validation check |
|---|---|---|
| Set Window Size | Gives the page a consistent viewport before loading | Keep the default unless your pages need a different layout. |
| Navigate | Holds the SEEK job detail URLs | Replace sample URLs with approved links, one URL per input item. |
| Waits and Sleep | Gives the page body and async job data time to settle | Increase waits only after observing slow pages in a test run. |
| Inject JavaScript | Normalizes embedded, API-backed, and fallback fields | Empty rows usually mean access, layout, or data-source drift. |
| Structured Export | Appends rows to seek_details_scraper_final.csv | Confirm filename, headers, append mode, and local save folder. |
| Loop Continue | Advances to the next URL | Keep it at the end of the loop body. |
Runbook
How to scrape SEEK job details to CSV
Import the template
Open the SEEK Job Details Scraper by URL page, download the JSON, and import it into UScraper.
Prepare approved URLs
Build a small list of SEEK job detail pages from a shortlist, spreadsheet, saved search, or listing workflow. Test one URL manually before the run.
Replace Navigate inputs
Open the Navigate block and paste your own URLs. Keep the list short for the first pass so row-by-row validation is easy.
Set the export path
Structured Export writes seek_details_scraper_final.csv in append mode. Change the save folder and use a fresh filename for important batches.
Run a validation batch
Process two to five pages while watching the browser. Stop if pages show challenges, redirects, unavailable-job notices, or mostly blank fields.
Audit the CSV
Compare title, company, salary, location, description, and status against the live pages before scaling.
Append mode creates duplicates when you rerun the same list. Clear the CSV, rename the file, or deduplicate by page_url before reporting.
Output
SEEK jobs to CSV: export fields
There is no bundled CSV sample for this blog, so use the workflow definition and your first dry run together. The stock template writes 16 columns.
seek_details_scraper_final.csvColumn
page_url
The final SEEK job detail URL for the row.
Column
cover_image_url
Cover or logo image URL when exposed.
Column
job_title
Role title from embedded data, job data, or page content.
Column
company
Advertiser or employer name.
Column
location
Job location text.
Column
classifications
Classification and sub-classification text.
Column
job_type
Full time, part time, contract, or similar work type.
Column
salary
Visible salary label when available.
Column
posted_date
Posted date or posting age.
Column
job_details
Cleaned long-form role description.
Column
employer_questions
Application or screening questions when visible.
Column
company_review
Company rating value when exposed.
Column
company_review_count
Review count when exposed.
Column
industry
Industry label when available.
Column
company_intro
Company profile or intro text.
Column
scrape_status
Extraction status such as ok_embedded_json, ok_api, blocked_or_challenge, or api_failed_no_job_data.
Use these columns as the audit trail for every batch: identity fields prove the source page, detail fields support analysis, and scrape_status explains row quality.
The workflow JSON also shows the extraction intent directly:
{
"project": {
"name": "Seek Details Scraper by URL",
"description": "Scrapes SEEK job detail pages by URL..."
},
"blocks": [
{ "title": "Navigate", "config": { "urls": ["https://www.seek.com.au/job/89534344"] } },
{ "title": "Inject JavaScript", "config": { "waitForCompletion": false, "timeout": 10 } },
{
"title": "Structured Export",
"config": {
"fileName": "seek_details_scraper_final.csv",
"includeHeaders": true,
"fileMode": "append",
"columns": ["page_url", "job_title", "company", "salary", "job_details", "scrape_status"]
}
},
{ "title": "Loop Continue" }
]
}
Troubleshooting
Common issues when scraping SEEK job pages
| Symptom | Likely cause | What to do |
|---|---|---|
blocked_or_challenge | SEEK returned a verification, CAPTCHA, access-denied, or browser-check page | Pause, inspect the browser, and continue only with permitted access. |
Blank salary | The ad does not expose salary text or the field loaded differently | Validate against the page; do not infer salary without a separate rule. |
Short or repeated job_details | Layout drift, hidden content, or fallback data | Test a fresh URL and update selectors or helper logic if needed. |
| Duplicate rows | Append mode plus repeated runs | Clear the file, use a dated filename, or deduplicate on page_url. |
| Slow pages | Heavy page rendering, network delay, or throttling | Increase waits gradually and keep batches smaller. |
For broader tool research, compare hosted options such as Octoparse SEEK Details Scraper, Browse AI SEEK robots, Apify SEEK actors, and Robomotion SEEK automation. UScraper keeps this tutorial centered on a local desktop workflow and a reviewable CSV.
Frequently asked questions
SEEK job pages may be public, but automated collection can still be limited by SEEK terms, robots rules, copyright, privacy law, database rights, and local regulations. Keep runs modest, do not bypass CAPTCHA or access controls, and get legal advice before using the export commercially.
Next step
Download the SEEK details scraper template
Use this post as the operating guide and the SEEK Job Details Scraper by URL template as the import path. After your first clean run, browse the UScraper template library for adjacent job-board workflows, or return to the blog for more scraper tutorials.

