Visa Sponsorship Jobs with H-1B Filing Data

Search open jobs from employer career sites by title keyword, kept to employers that file for US H-1B workers. Each job comes with the employer's public H-1B filing count from the Department of Labor and the wage it filed for a similar title. A filed wage is not the pay for that job, and a past filing does not mean the role is sponsored. It runs as an Apify Actor through Apify's hosted MCP server, so you need an Apify account and API token. Paid per job, 0.003 USD a job. Unofficial tool.

托管 MCP 服务器

npx add-mcp 'https://mcp.apify.com/?tools=plainrecordlabs/visa-sponsor-jobs'

可安装到 Claude Code、Codex、Cursor 等客户端

文档

Visa Sponsorship Jobs and H1B Salary Data: H-1B Sponsors Hiring (plainrecordlabs/visa-sponsor-jobs) Actor

Visa sponsorship jobs from company career sites, each matched to the employer's US H-1B (H1B) filing record (LCA): how often it files and the H1B salary it filed for similar titles. A filed wage is not the pay for that job, and a past filing does not mean the role is sponsored. Unofficial tool.

Pricing

$3.00 / 1,000 jobs

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes. 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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the API section below.

Each client library has reference documentation the quickstart does not restate: JavaScript/TypeScript (npm install apify-client) and Python (pip install apify-client).

README

Visa Sponsorship Jobs: H-1B (H1B) Sponsors With Open Roles

Find open jobs at companies that sponsor US work visas. Each job comes straight from the employer's career site and is matched to the employer's public H-1B filing record from the US Department of Labor: how many H-1B filings it made, the job titles it filed for, and the wage it filed for a similar title.

Type a few title keywords and press Start. You get one row per open job at an employer with H-1B filings, newest first.

This is an unofficial tool, not affiliated with the Department of Labor, USCIS or any employer. A past H-1B filing does not mean a given job will be sponsored. Always confirm with the employer before you apply.

How to use

  1. Add one or more Title keywords, like software engineer.
  2. Optional: narrow the results with Countries (type US for US jobs only), Location keywords or Remote jobs only, or keep only recent jobs with First seen within (days).
  3. Optional: raise Minimum H-1B filings by the employer to keep only employers that file often. The default is 5.
  4. Set Max results. It also caps what one run can cost.
  5. Press Start. When the run ends, open the Output tab or download the results from the Storage tab as CSV, Excel or JSON.
  6. For daily alerts, turn on Only jobs not seen in my earlier runs and add a daily schedule in Apify Console.

What people use it for

  • International job seekers: focus your search on employers that file for H-1B workers in your field.
  • Career advisors and university career offices: keep a fresh list of open roles at sponsoring employers.
  • Recruiters and researchers: see which hiring companies file most and what wages they file.

Input

FieldWhat it does
Title keywordsSearch open jobs whose title contains any of these words, like software engineer. With no title or location keywords, the run searches software engineer.
Location keywordsKeep jobs whose location contains any of these, like Remote or Texas.
CountriesKeep only jobs in these countries, like US, or GB and Germany. Empty means all countries.
Remote jobs onlyKeep only jobs marked remote.
Minimum H-1B filings by the employerKeep only employers with at least this many certified H-1B filings in the data. Default 5.
First seen within (days)Only jobs our index first saw in the last N days.
Max resultsA cap on how many jobs one run returns, newest first.
Only jobs not seen in my earlier runsReturns only new postings. Pair with a daily schedule for alerts.

Output

One item per job, with a sponsor block:

{
  "company": "Cisco",
  "title": "Software Engineer",
  "location": "San Jose, California, US",
  "remote": false,
  "firstSeenAt": "2026-10-24",
  "url": "https://cisco.wd5.myworkdayjobs.com/Cisco_Careers/job/...",
  "sponsor": {
    "employerOnFilings": "Cisco Systems, Inc.",
    "h1bFilings": 300,
    "titleOnFilings": "Software Engineer",
    "titleFilings": 90,
    "filedMedianWageUsd": 150000,
    "titleMatch": "exact",
    "topFiledTitles": [{ "title": "Software Engineer", "filings": 90, "medianWageUsd": 150000 }]
  },
  "filingsData": ["LCA_Disclosure_Data_FY2026_Q3.xlsx"]
}

The figures in the example are illustrative. Real values come from the data.

  • h1bFilings counts the employer's certified H-1B labor condition applications in the Department of Labor release named in filingsData. Each release covers the federal fiscal year so far. It is a sign the employer sponsors, not a promise.
  • filedMedianWageUsd is the median yearly wage the employer filed for the matching title. titleMatch says whether the job title matched a filed title exactly or only looked similar.
  • Employers are matched by name, so a company that files under a different legal name may be missed or, rarely, matched to a similarly named company. The filed name is shown in employerOnFilings so you can check.
  • With Countries set, each job also gets country: the first of your countries it is listed in, as a two-letter code like US.
FieldWhat it holds
company, companySlug, atsThe employer, its name on the job board and the board system.
title, department, teamThe job title and where it sits, when the board lists them.
location, allLocations, countryThe main location, every listed place, and your matched country when Countries is set.
remote, workplaceType, employmentTypeRemote flag, remote or hybrid or on-site, and full or part time, as the board gives them.
salaryMin, salaryMax, salaryCurrency, salaryInterval, salaryTextThe published pay range, when the board shows one.
publishedAt, updatedAt, postedTextDates the board publishes, or Workday's own posted text.
firstSeenAt, daysOpenThe day our index first saw the job, and days since.
url, applyUrlThe job page and the apply link.
jobId, jobKeyThe job's ID on its board, and a stable key across runs.
sponsorThe employer's H-1B filing count, the closest filed title, its filings and median filed wage, and its three most filed titles.
filingsDataThe Department of Labor files the sponsor figures come from.
scrapedAtWhen the run read the job.

US jobs only

An employer with H-1B filings often hires in other countries too. Without a country filter you get its jobs wherever they are, so a search can return jobs in India, the UK or Malaysia. Put US in Countries to keep only jobs listed in the US.

The country is read from the location text on the career site, using country names, US state names and codes, and some large cities. Its limits:

  • A job whose location names no country, like Remote or Multiple Locations with no list, is left out.
  • A job listed in several places is kept when any of them is in your countries, so its main location may be elsewhere. allLocations shows every place.
  • Countries the rules do not know yet give no country, so those jobs are left out of any country filter.

Where the data comes from

  • Jobs: our daily index of company career sites on Greenhouse, Lever, Ashby, Workable, Recruitee and Workday, mostly larger US employers today. For Workday employers it holds each employer's 100 newest jobs.
  • H-1B filings: the Department of Labor's public LCA disclosure data. It is refreshed when the department publishes a new quarter. We keep only employer, job title, occupation, state and filed wage, never names of people.

FAQ

How do I find companies that sponsor H-1B (H1B) visas and are hiring now? Type your job title keywords and press Start. Every row is an open job at an employer with certified H-1B filings, with the employer's filing count. Raise Minimum H-1B filings by the employer to keep only frequent filers.

Will this job sponsor my visa? Not necessarily. A filing record shows the employer has sponsored before, not that this role will. Ask the employer before you apply.

Can I search H-1B sponsor jobs by city, state or remote? Yes. Put a city or state in Location keywords, or turn on Remote jobs only.

Can I get US jobs only? Yes. Put US in Countries. Jobs whose location names no country, like a plain Remote, are left out.

What salary do H-1B sponsors pay for this role? The sponsor block shows the wage the employer filed for a similar title in the Department of Labor data. It is a filed wage, not the offer for this job.

Can I get new H-1B sponsor jobs every day? Turn on Only jobs not seen in my earlier runs and add a daily schedule in Apify Console. Results also download from the Storage tab as CSV or Excel.

Does it cover every employer? No. It covers employers whose career sites run on the systems listed below, mostly larger US companies. Small employers on other systems are not included yet.

Use it from an AI agent or MCP

AI agents can find and run this Actor through the Apify MCP server. Its search-actors tool finds it, fetch-actor-details reads the input and output fields described above, and call-actor runs it on your Apify account at the prices on the Pricing tab. To give an agent only this Actor as a tool, add it to the server URL: https://mcp.apify.com?tools=plainrecordlabs/visa-sponsor-jobs.

Every field is optional. For example, this input finds data scientist jobs in the US at employers with at least 20 H-1B filings:

{ "titleKeywords": ["data scientist"], "countries": ["US"], "minFilings": 20, "maxResults": 50 }

Pricing

You pay per job returned. The price is on the Pricing tab. Max results caps what one run can cost.

Feedback

Missing an employer, or need a field? Open an issue on the Issues tab.

Actor input Schema

titleKeywords (type: array):

Search open jobs whose title contains any of these words, for example "software engineer" or "data scientist". Left empty with no location keywords, the run searches "software engineer".

locationKeywords (type: array):

Keep only jobs whose location contains any of these, for example Remote, Texas or New York. Empty = all locations.

countries (type: array):

Keep only jobs in these countries. Type US for US jobs only, or a two-letter code like GB or DE, or the English name like Germany. The country is read from the location text the board gives, including US state codes, so a location like Remote with no country is left out. A job listed in several places is kept when any of them is in one of your countries. Empty = all countries.

remoteOnly (type: boolean):

Keep only jobs marked remote, for example to find remote roles at H-1B sponsors.

minFilings (type: integer):

Keep only employers with at least this many certified H-1B filings (LCAs) in the disclosure data, for example 20. Higher = employers that sponsor more often. Default 5.

postedWithinDays (type: integer):

Keep jobs our index first saw within this many days, for example 7 for the past week. 0 = any age.

maxResults (type: integer):

Return at most this many jobs, newest first, for example 50. 0 = no limit. Default 100.

onlyNew (type: boolean):

Remembers job IDs between your runs (in your own key-value store) and returns only new postings. Pair with an Apify schedule for daily alerts, for example a run every morning that returns only jobs since the last one.

Actor input object example

{
  "titleKeywords": [
    "software engineer",
    "data scientist"
  ],
  "locationKeywords": [
    "Texas",
    "New York"
  ],
  "countries": [
    "US"
  ],
  "remoteOnly": false,
  "minFilings": 20,
  "postedWithinDays": 7,
  "maxResults": 50,
  "onlyNew": true
}

Actor output Schema

jobs (type: string):

One item per open job at an employer with public H-1B filings, with a sponsor block.

summary (type: string):

How many jobs matched, how many were at sponsoring employers, and which filing quarters were used.

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

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 = {
    "titleKeywords": [
        "software engineer"
    ],
    "minFilings": 5,
    "maxResults": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("plainrecordlabs/visa-sponsor-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

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 = {
    "titleKeywords": ["software engineer"],
    "minFilings": 5,
    "maxResults": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("plainrecordlabs/visa-sponsor-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

echo '{
  "titleKeywords": [
    "software engineer"
  ],
  "minFilings": 5,
  "maxResults": 20
}' |
apify call plainrecordlabs/visa-sponsor-jobs --silent --output-dataset

MCP server setup

{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,plainrecordlabs/visa-sponsor-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/y4J1ef4tVUkpcbITi/builds/I7LSofs5orTWcpLxu/openapi.json