# Australia Visa Sponsorship & Working Holiday Jobs (Seek) (`wellbuilt_zythem/australia-visa-sponsorship-jobs`) Actor

Find Australian jobs that will sponsor a visa (482, 186, 494, DAMA) or that welcome Working Holiday makers and backpackers, including 88-day regional work. Sweeps Seek across all eight states and reads the full advert to flag sponsorship, WHV and explicit refusals.

- **URL**: https://apify.com/wellbuilt\_zythem/australia-visa-sponsorship-jobs.md
- **Developed by:** [Carlos Escanez](https://apify.com/wellbuilt_zythem) (community)
- **Stats:** 3 total users, 2 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 job ads

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Australia & New Zealand Visa Sponsorship Jobs — Seek Scraper

**Every Australian and New Zealand job ad that will sponsor a visa or hire a Working Holiday maker, swept from Seek across every state and region, with the visa terms read out of the full advert.**

### See it run

https://youtu.be/PiarqTUzoB4

**Or ask for employers instead of jobs.** Set `outputMode: "employers"` and you get one row per company, ranked by how many sponsorship ads they run, with their sponsorship rate, states, main industry and median salary. That is the list a migration agent or a recruiter actually works down — nobody wants 4,000 adverts.

Seek has no "visa sponsorship" filter. Employers write it a hundred ways — *482 visa*, *TSS*, *sponsorship available*, *WHV welcome*, *backpackers wanted*, *88 days* — and just as often write the opposite in the fine print: *must have full working rights*, *no sponsorship*, *citizens and PR only*. This Actor reads the whole ad and tells you which is which.

***

### Why a keyword search on Seek is not enough

- **Seek caps every query at 500 results.** A national search for *working holiday* returns the same 500 ads whatever you do. This Actor splits every keyword by state and by listing date and merges the shards, which is how one run collected **1,246 unique ads from four queries** where a plain search would have shown 500.
- **The title lies.** In a test run, an ad titled *"Mechanical Fitter — visa sponsor"* said *"sponsorship is not available"* in paragraph four. The Actor flagged it `refusesSponsorship: true`. A title scraper would have sold you a dead lead.
- **Eight states, seven keywords, one run.** 56 queries, deduplicated by job id, so an ad that matches three keywords is delivered — and charged — once.

***

### What you get

| Field | Notes |
|---|---|
| `title`, `company`, `location`, `state` | State parsed from Seek's location label |
| `classification`, `subClassification` | Seek's own industry labels |
| `workType`, `workArrangement` | Full time / casual, on-site / remote |
| `salaryLabel`, `salaryMin`, `salaryMax`, `salaryPeriod` | Parsed from the advertised range |
| `listingDate`, `daysSinceListing` | |
| `teaser`, `bulletPoints`, `description` | Full advert text when `fetchDescriptions` is on |
| **`offersSponsorship`** | 482 / TSS, 186, 494, 491, DAMA, employer nomination, PR pathway |
| **`welcomesWorkingHoliday`** | 417 / 462, WHV, backpackers, travellers |
| **`countsForRegional`** | 88 days, second/third-year visa, farm, harvest, specified regional work |
| **`refusesSponsorship`** | Full working rights required, no sponsorship, citizens/PR only |
| **`isVisaFriendly`** | Any of the three above, and not a refusal |
| `evidence` | The exact phrases that triggered each flag, so you can check in one glance |
| `url`, `source`, `scrapedAt` | |

***

### Example inputs

**Sponsored jobs in Queensland and WA posted this week**

```json
{
  "states": ["Queensland", "Western Australia"],
  "onlySponsorship": true,
  "postedWithinDays": 7
}
```

**Working Holiday and 88-day work, nationwide, hospitality only**

```json
{
  "onlyWorkingHoliday": true,
  "onlyRegional": false,
  "classifications": ["Hospitality & Tourism"]
}
```

**Fast and cheap: titles and teasers only, no full-ad fetch**

```json
{
  "fetchDescriptions": false,
  "onlyVisaFriendly": true
}
```

***

### Example output

```json
{
  "jobId": "94455590",
  "title": "MECHANIC | TECHNICIAN | 482 Sponsorship Available | Weipa QLD | $40-$45/hr plus",
  "company": "Gulf Parts & Service",
  "location": "Weipa, Cairns & Far North QLD",
  "state": "QLD",
  "classification": "Trades & Services",
  "salaryLabel": "$40 – $45 per hour",
  "salaryMin": 40,
  "salaryMax": 45,
  "salaryPeriod": "hour",
  "listingDate": "2026-09-08T04:12:51Z",
  "daysSinceListing": 2,
  "offersSponsorship": true,
  "welcomesWorkingHoliday": false,
  "countsForRegional": false,
  "refusesSponsorship": false,
  "isVisaFriendly": true,
  "evidence": ["482 Sponsorship", "visa sponsor"],
  "descriptionFetched": true,
  "url": "https://www.seek.com.au/job/94455590"
}
```

***

### Who this is for

- **Migration agents and visa consultants** — a live list of employers already willing to sponsor, by trade and state.
- **Recruiters placing overseas candidates** — sponsorship-ready roles are the only ones worth pitching a 482 applicant.
- **Working Holiday makers and the platforms, agencies and communities that serve them** — WHV-friendly roles and regional work that counts toward a second year.
- **Regional employers' associations and labour-hire firms** — who is hiring on sponsorship in your region, this week.
- **Analysts** — which industries and states are sponsoring, and how that moves month to month.

***

### Pricing

Two events. **`record`** per job delivered after filtering — ads dropped by your filters cost nothing. **`description`** per full advert read.

Reading the advert is where the accuracy lives: in testing, **5 of every 8 visa-friendly jobs mention the visa only in the body**, and refusals hide there too. It is also the expensive part, because job pages block datacenter IPs and each page is about 250 KB through a residential proxy.

Three modes, so you choose:

| Mode | What it reads | Speed | Accuracy |
|---|---|---|---|
| `all` (default) | Every advert | ~1 ad/sec | Best |
| `signals` | Only ads hinting at a visa in the teaser | ~10x faster | Misses most body-only mentions |
| `none` | Titles and teasers, no proxy at all | Instant | Weakest, no refusal detection |

***

### Reliability

- Search uses Seek's public JSON endpoint with no key. Advert pages are fetched with a browser-grade client because the page host rejects plain HTTP clients.
- Every query retries three times with backoff. A failed shard is logged and counted in `RUN_SUMMARY`; the rest of the run continues.
- Results are deduplicated by job id across all keywords and states.

***

### Data source

Job advertisements published on seek.com.au. Records are business data — an employer's public advert — and carry no personal data. Every record links back to its source ad.

# Actor input Schema

## `countries` (type: `array`):

Seek runs the same board in Australia and New Zealand. Pick one or both.

## `outputMode` (type: `string`):

'jobs' returns one row per advert. 'employers' rolls those adverts up into one row per company, ranked by how many sponsorship ads they run - which is the list a migration agent or recruiter actually works from.

## `onlyVisaFriendly` (type: `boolean`):

Keep ads that offer sponsorship, welcome Working Holiday makers, or count as regional work — and drop any that explicitly refuse.

## `onlySponsorship` (type: `boolean`):

482 / TSS, 186, 494, 491, DAMA, employer nomination, PR pathway.

## `onlyWorkingHoliday` (type: `boolean`):

417 / 462, WHV, backpackers, travellers welcome.

## `onlyRegional` (type: `boolean`):

Farm, harvest, specified regional work that counts toward a second or third year visa.

## `excludeRefusals` (type: `boolean`):

Drop 'must have full working rights', 'no sponsorship', 'citizens and PR only'.

## `postedWithinDays` (type: `integer`):

0 for no limit.

## `states` (type: `array`):

Leave empty for all eight.

## `keywords` (type: `array`):

Each keyword runs in each state. Leave empty for the built-in visa set: visa sponsorship, sponsorship available, 482 visa, working holiday, backpacker, 88 days, regional work.

## `classifications` (type: `array`):

Filter by Seek's industry label, e.g. 'Hospitality & Tourism', 'Healthcare & Medical', 'Trades & Services'. Leave empty for all.

## `maxResults` (type: `integer`):

0 for no limit.

## `proxyConfiguration` (type: `object`):

Job pages block datacenter IPs. Reading the full advert needs an Australian residential exit; without one the run still works but classifies from the teaser only.

## `descriptionMode` (type: `string`):

'all' (recommended) reads every advert: in testing, 5 of every 8 visa-friendly jobs mention the visa only in the body, and refusals hide there too. 'signals' reads only ads that already hint at a visa in the teaser: about 10x cheaper and much faster, but it misses most of them. 'none' uses titles and teasers only, with no proxy at all.

## `nzRegions` (type: `array`):

Only used when New Zealand is selected. Leave empty for the ten main regions.

## Actor input object example

```json
{
  "countries": [
    "AU"
  ],
  "outputMode": "jobs",
  "onlyVisaFriendly": true,
  "onlySponsorship": false,
  "onlyWorkingHoliday": false,
  "onlyRegional": false,
  "excludeRefusals": true,
  "postedWithinDays": 0,
  "states": [],
  "keywords": [],
  "classifications": [],
  "maxResults": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  },
  "descriptionMode": "all",
  "nzRegions": []
}
```

# Actor output Schema

## `results` (type: `string`):

Job ads classified by visa sponsorship signals, with the evidence phrase that triggered each classification. In employers mode, one row per company with its sponsorship rate.

## `runSummary` (type: `string`):

What the run actually did: sources swept, records delivered, records charged for, and any failures. Read this to see what a run cost before trusting its numbers.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("wellbuilt_zythem/australia-visa-sponsorship-jobs").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("wellbuilt_zythem/australia-visa-sponsorship-jobs").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call wellbuilt_zythem/australia-visa-sponsorship-jobs --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,wellbuilt_zythem/australia-visa-sponsorship-jobs"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/50gE0JquyTEVoRJra/builds/x8RG3pXfRnyzyhEgD/openapi.json
