Seek Jobs Scraper | $0.8 / 1k | All-In-One
Pricing
from $0.80 / 1,000 results
Seek Jobs Scraper | $0.8 / 1k | All-In-One
Extract structured SEEK job listings with titles, salaries, company data, locations, work arrangements, and hiring signals across Australia and New Zealand. Built for enterprise-grade hiring intelligence, labor market analysis, and automated recruiting or analytics pipelines.
Pricing
from $0.80 / 1,000 results
Rating
0.0
(0)
Developer
Fatih Tahta
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Seek Jobs Scraper
Slug: fatihtahta/seek-jobs-scraper
Overview
Seek Jobs Scraper collects structured job listing data from SEEK, including listing IDs, titles, summaries, descriptions, employers, locations, classifications, work arrangements, posting dates, compensation details, contact matches, and media assets when available. It is designed for teams that need consistent job market data in a format that is ready for review, export, and downstream processing. https://www.seek.com.au and https://nz.seek.com/ are two of the most important job marketplaces in Australia and New Zealand, making them valuable sources for labor market analysis, employer tracking, and hiring intelligence. The actor automates repeatable collection across multiple searches and filters without manual copying or spreadsheet cleanup. That means less time spent gathering listings by hand and more time spent analyzing results.
Why Use This Actor
- Market research and analytics teams: Track hiring demand, salary signals, role mix, and employer activity across functions, locations, and time periods.
- Product and content teams: Discover role trends, validate demand for topics or audiences, and build job-based content, reports, or editorial calendars.
- Developers and data engineering teams: Feed structured SEEK job data into ETL pipelines, warehouses, dashboards, internal search tools, or APIs.
- Lead generation and enrichment teams: Identify employers, advertiser details, public contact clues, and company profile data for targeted enrichment workflows.
- Monitoring and competitive tracking teams: Watch specific keywords, categories, employers, or regions to detect new hiring activity and market movement.
Input Parameters
Provide any combination of queries and filters supported by this actor. Leave queries empty to run a broad search with the selected filters, or leave all optional fields empty to collect broader results.
| Parameter | Type | Description | Default |
|---|---|---|---|
country | string | SEEK market to search. Allowed values: australia, new-zealand. | australia |
queries | string[] | Optional search keywords or phrases, such as job titles, skills, or hiring terms. Each query runs as a separate search. Leave empty to search broadly within the selected market and filters. | – |
maximize_coverage | boolean | When enabled, the actor makes a best effort to preserve broader result coverage for large searches that may otherwise be truncated by site-side result limits. Recommended for broad, high-volume queries when completeness matters more than speed. | false |
category | string[] | Job categories or specialties to include. Allowed values: any category or subcategory available in the actor input picker, including broad categories such as accounting, engineering, sales, information_communication_technology, and specific values such as information_communication_technology_developers_programmers. | – |
contract_type | string[] | Employment types to include. Allowed values: Full time, Part time, Contract/Temporary, Casual/Vacation. | – |
remote_settings | string[] | Work arrangements to include. Allowed values: On-Site, Hybrid, Remote. | – |
publication_date | string | Limit results to recently posted jobs. Allowed values: 24-hours, 3-days, 7-days, 14-days, 30-days. | – |
sort_by | string | Result ordering. Allowed values: most-relevant-first, newest-first. | – |
location | string | Location filter applied to every search in the run, such as Sydney NSW, Melbourne VIC, or Auckland. | – |
min_salary | integer | Minimum annual salary to include. Use whole numbers such as 50000. | – |
max_salary | integer | Maximum annual salary to include. Use whole numbers such as 150000. | – |
limit | integer | Maximum number of jobs to save for each search term. Leave empty to collect all available matches. | – |
proxyConfiguration | object | Optional connection settings. Use Apify Proxy or your own proxy settings if you want more reliable access or traffic routed through a different IP. | Apify Proxy with RESIDENTIAL group |
Example Inputs
Scenario: Query-driven run for software roles in Sydney
{"country": "australia","queries": ["software engineer", "backend developer"],"maximize_coverage": true,"location": "Sydney NSW","publication_date": "7-days","sort_by": "newest-first","limit": 250}
Scenario: Targeted run for remote product roles
{"country": "australia","queries": ["product manager"],"category": ["information_communication_technology_product_management_development"],"remote_settings": ["Remote", "Hybrid"],"min_salary": 120000,"publication_date": "14-days","limit": 150}
Scenario: Filtered New Zealand operations search
{"country": "new-zealand","queries": ["operations manager"],"category": ["manufacturing_transport_logistics_management"],"contract_type": ["Full time"],"location": "Auckland","sort_by": "most-relevant-first","limit": 100}
Output
6.1 Output destination
The actor writes results to an Apify dataset as JSON records. And the dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs without post-processing.
6.2 Record envelope (all items)
For downstream systems, treat each record as having this stable identifier envelope:
type(string, required): Record type. For this actor, the value isjob_listing, exposed insource_context.record_type.id(number, required): SEEK listing identifier. In dataset output, this identifier may be serialized as a numeric string.url(string, required): Canonical listing URL, exposed insource_context.record_url.
Recommended idempotency key: type + ":" + id
Use this key for deduplication and upserts when the same listing appears in repeated runs, overlapping queries, or scheduled collections.
6.3 Examples
Example: job listing (type = "job_listing")
{"id": "91521282","title": "Software & Applications Programmer - SAP Payroll","source_context": {"record_type": "job_listing","source_country": "Australia","seed": {"id": "b790dea146a9","type": "query","value": "software"},"source_url": "https://www.seek.com.au/software-jobs?classification=1210%2C6261&daterange=7&sortmode=ListedDate&subclassification=6262&where=All+Sydney+NSW&workarrangement=2&worktype=242","record_url": "https://www.seek.com.au/job/91521282","domain": "www.seek.com.au","page_index": 1,"detail_fetch_status": "success"},"job": {"summary": "Seeking a Technical Specialist with knowledge in SAP ECC HR/Payroll to support the AFP Payroll system.","description_text": "Seeking a Technical Specialist with knowledge in SAP ECC HR/Payroll to support the AFP Payroll system.","description_html": "<p>Seeking a Technical Specialist with knowledge in SAP ECC HR/Payroll to support the AFP Payroll system.</p>","bullet_points": ["Flexible working from home arrangements","6 weeks annual leave","Incremental salary progression"]},"posting": {"listed_at": "2026-04-15T00:54:47.000Z","listed_age_label": "10h ago","expires_at": "2026-04-29T13:59:59.999Z","status": "Active","is_expired": false,"is_featured": false,"listing_type": "standard","is_link_out": true,"share_url": "https://www.seek.com.au/job/91521282?tracking=SHR-WEB-SharedJob-anz-1"},"role": {"role_key": "applications-developer","normalized_role_title": "Application Developer","classification": "Information & Communication Technology","subclassification": "Developers/Programmers","classification_labels": ["Developers/Programmers (Information & Communication Technology)","Government - Federal (Government & Defence)"]},"workplace": {"employment_types": ["Full time"],"work_arrangement": "Hybrid","work_arrangement_labels": ["Hybrid"],"work_arrangement_types": ["HYBRID"]},"company": {"name": "Australian Federal Police","advertiser_name": "AUSTRALIAN FEDERAL POLICE","advertiser_id": "4728926","is_verified": true,"registration_date": "2007-06-25T09:12:28.000Z","profile_id": "1096","profile_url": "https://www.seek.com.au/companies/australian-federal-police-432992","search_url": "https://www.seek.com.au/Australian-Federal-Police-jobs/at-this-company","description": "The Australian Federal Police is Australia’s national policing agency.","industry": "Law Enforcement & Emergency Services","size": "5,001-10,000 employees","review_count": 27,"review_rating": 4},"location": {"display_name": "Sydney NSW","country_code": "AU","country": "Australia","suburb": "Sydney","state": "New South Wales","postcode": "2000","seo_where": "Sydney NSW 2000","seo_broader_location": "Sydney"},"compensation": {"text": "$179,919.00 - $198,686.00 + 15.4% Superannuation","amount": 179919,"currency": "$"},"contacts": {"matches": [{"type": "Email","value": "craig.hall@afp.gov.au"},{"type": "Phone","value": "02 5126 7285"}]},"media": {"listing_logo_url": "https://bx-branding-gateway.cloud.seek.com.au/example-logo","company_logo_url": "https://image-service-cdn.seek.com.au/example-company-logo","brand_cover_url": "https://image-service-cdn.seek.com.au/example-brand-cover","brand_thumbnail_url": "https://image-service-cdn.seek.com.au/example-brand-thumbnail"}}
Field reference
Job listing fields (source_context.record_type = "job_listing")
id(string, required): SEEK listing identifier.title(string, required): Job title as shown on the listing.source_context.record_type(string, required): Record type, alwaysjob_listing.source_context.source_country(string, optional): Source market, such as Australia or New Zealand.source_context.seed.id(string, required): Identifier for the originating search seed.source_context.seed.type(string, required): Seed type used for the run. Current value:query.source_context.seed.value(string, required): Original query value that led to the record.source_context.source_url(string, required): Search results URL used to discover the listing.source_context.record_url(string, required): Canonical listing URL.source_context.detail_page_url(string, optional): Listing detail page URL when stored separately.source_context.domain(string, required): Source domain for the record.source_context.page_index(integer, required): Search results page number where the listing was found.source_context.detail_fetch_status(string, optional): Detail retrieval status when available.job.summary(string, optional): Short job summary or teaser.job.description_text(string, optional): Plain-text job description.job.description_html(string, optional): HTML-formatted job description.job.bullet_points(array[string], optional): Highlight points shown on the listing.posting.listed_at(string, optional): Listing timestamp in ISO format.posting.listed_age_label(string, optional): Human-readable age label, such as2d ago.posting.expires_at(string, optional): Expiry timestamp when available.posting.status(string, optional): Listing status, such as active or expired.posting.is_expired(boolean, optional): Whether the listing is expired.posting.is_featured(boolean, optional): Whether the listing is marked as featured.posting.listing_type(string, optional): Listing format or promotion type.posting.is_link_out(boolean, optional): Whether the listing links out to an external application flow.posting.share_url(string, optional): Shareable listing URL.role.role_key(string, optional): SEEK role key when available.role.normalized_role_title(string, optional): Normalized role title.role.classification(string, optional): Broad job category.role.subclassification(string, optional): More specific job specialty.role.classification_labels(array[string], optional): Display labels for classification matches.workplace.employment_types(array[string], optional): Employment type labels, such as full time or contract.workplace.work_arrangement(string, optional): Primary work arrangement.workplace.work_arrangement_labels(array[string], optional): Work arrangement labels shown on the listing.workplace.work_arrangement_types(array[string], optional): Normalized work arrangement codes.company.name(string, optional): Employer or company name.company.advertiser_name(string, optional): Advertiser name as displayed on SEEK.company.advertiser_id(string, optional): Advertiser identifier.company.is_verified(boolean, optional): Whether the advertiser is shown as verified.company.registration_date(string, optional): Advertiser registration date.company.profile_id(string, optional): Company profile identifier.company.profile_url(string, optional): Company profile URL.company.search_url(string, optional): SEEK company jobs URL.company.website_url(string, optional): External company website URL.company.description(string, optional): Company description text.company.industry(string, optional): Company industry label.company.size(string, optional): Company size band.company.review_count(integer, optional): Number of company reviews.company.review_rating(number, optional): Company review rating.location.display_name(string, optional): Display location shown on the listing.location.country_code(string, optional): Country code.location.country(string, optional): Country name.location.suburb(string, optional): Suburb or local area.location.region(string, optional): Region value when available.location.state(string, optional): State or province.location.postcode(string, optional): Postal code.location.seo_where(string, optional): SEO-oriented location string.location.seo_broader_location(string, optional): Broader location label.compensation.text(string, optional): Salary text exactly as shown.compensation.amount(number, optional): Parsed numeric salary amount when available.compensation.currency(string, optional): Currency symbol or currency value.contacts.phone_number(string, optional): Extracted phone number when available.contacts.matches(array[object], optional): Contact items detected in the listing, such as email addresses or phone numbers.media.listing_logo_url(string, optional): Listing logo image URL.media.company_logo_url(string, optional): Company logo image URL.media.brand_cover_url(string, optional): Brand cover image URL.media.brand_thumbnail_url(string, optional): Brand thumbnail image URL.
Data guarantees & handling
- Best-effort extraction: fields may vary by region, session, availability, and site-side presentation changes.
- Optional fields: null-check in downstream code.
- Deduplication: recommend
type + ":" + id.
How to Run on Apify
- Open the actor in Apify Console.
- Configure your search parameters, such as optional queries, categories, country, location, and salary or work arrangement filters.
- Turn on
maximize_coverageif you want the actor to prioritize fuller coverage on broad searches. - Set the maximum number of outputs to collect with the
limitfield if you want to cap results per search. - Click Start and wait for the run to finish.
- Download results in JSON, CSV, Excel, or another supported Apify export format.
Scheduling & Automation
Scheduling
Automated Data Collection
You can schedule recurring runs to keep your SEEK dataset fresh without starting each run manually. This is useful for routine reporting, employer monitoring, and ongoing market tracking.
- Navigate to Schedules in Apify Console
- Create a new schedule (daily, weekly, or custom cron)
- Configure input parameters
- Enable notifications for run completion
- Optional: add webhooks for automated processing
Integration Options
- Webhooks: Trigger downstream actions when a run completes
- Zapier: Connect to 5,000+ apps without coding
- Make (Integromat): Build multi-step automation workflows
- Google Sheets: Export results to a spreadsheet
- Slack/Discord: Receive notifications and summaries
- Email: Send automated reports via email
Performance
- Estimated small runs (< 1,000 outputs): ~2-3 minutes
- Estimated medium runs (1,000-5,000 outputs): ~5-15 minutes
- Estimated large runs (5,000+ outputs): ~15-30 minutes
Execution time varies based on filters, result volume, and how much information is returned per record.
Compliance & Ethics
Responsible Data Collection
This actor collects publicly available job listing and employer information from https://www.seek.com.au and https://nz.seek.com/ for legitimate business purposes. Common uses include job market research and market analysis, recruiting analytics and workforce planning, and competitive monitoring or content aggregation. This section is informational and not legal advice.
- Employment market research and market analysis
- Recruiting analytics and workforce planning
- Competitive monitoring and reporting
Best Practices
- Use collected data in accordance with applicable laws, regulations, and the target site’s terms
- Respect individual privacy and personal information
- Use data responsibly and avoid disruptive or excessive collection
- Do not use this actor for spamming, harassment, or other harmful purposes
- Follow relevant data protection requirements where applicable, such as GDPR or CCPA
Support
For help, use the actor page Issues section or the public support channel on the actor page in Apify. When reporting a problem, include the input you used with any sensitive values removed, the run ID, a short description of expected versus actual behavior, and, if helpful, a small sample of the output.