# H1B Visa Sponsor Lookup (US & UK Sponsor Licence, No Login) (`locaihost/visa-sponsors`) Actor

Find out which companies sponsor H-1B visas: certified H1B and E-3 filings by year, denials, top job titles with median wage and wage level, PERM green-card cases and UK sponsor licence status. Official US and UK government data, no login. No match is free. $2.50 per 1,000 records.

- **URL**: https://apify.com/locaihost/visa-sponsors.md
- **Developed by:** [locaihost data](https://apify.com/locaihost) (community)
- **Categories:** Jobs, Lead generation, Business
- **Stats:** 7 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## H1B Visa Sponsor Lookup (US & UK Sponsor Licence, No Login)

Check whether a company sponsors visas, for which jobs, at what level and at what pay: type company names or domains and get one H1B sponsor profile per company from official US Department of Labor H-1B, E-3 and PERM disclosure data plus the UK Home Office register of licensed sponsors. No login, no API key.

- **Job seekers:** shortlist employers that actually sponsor *this kind of role*, and see the wage they filed, before you apply.
- **Immigration law firms:** see a prospective client's filing history, certified and denied counts and typical offered wages per title.
- **Recruiters and global-mobility teams:** find employers that sponsor the roles you place, and benchmark offers against real filings.
- **Relocation services:** qualify leads. A company that files hundreds of H-1Bs or holds an A-rated UK licence needs your help.
- **Job boards:** add a "visa sponsor" badge and wage evidence to listings, or score live openings with jobs mode.

### Quick start

Paste this into the **JSON** tab of the input and click **Start**:

```json
{"companies": ["Google", "Amazon", "Infosys", "Deloitte", "microsoft.com"]}
```

You get 5 employer profiles, usually in under 20 seconds, including the live UK register download. Names (`Tata Consultancy Services`) and domains (`microsoft.com`) both work. Lookups use an index that ships with the Actor, so no proxies or logins are needed.

### What data can I get?

![Real employer rows from this Actor's output: certified H-1B/E-3 filings, denials, PERM cases, top sponsored title with median offered wage and UK licence rating](https://locaihost.org/img/readme/visa-sponsors.png)

**Employers mode** (the default) returns one profile per company:

| Group | Fields |
|---|---|
| Match | `input`, `employerName` (the matched entity with the most filings), `matchScore`, `matchType`, `matchedEmployers` (every legal entity counted, with its own totals) |
| US H-1B | `h1bCertifiedTotal`, `h1bCertifiedLatestFY`, `h1bDeniedTotal`, `h1bByFiscalYear` (certified, certified-withdrawn, denied, withdrawn), `visaClasses` (H-1B, H-1B1, E-3) |
| Job titles and pay | `topJobTitle`, `topJobTitleMedianWage`, `topJobTitles` (up to 15 by default, max 40: filings, p10 to p90 offered wage, wage-level mix and median wage per level), `worksiteStates` (top 10) |
| Wage levels | `employerWageLevels`, `employerWageLevelMix`, `employerMedianWageByLevel` (DOL levels I, II, III, IV and no level) |
| PERM | `permCertifiedTotal`, `permByFiscalYear`, `permTopJobTitles` (top 10 with median wage) |
| UK licence | `ukLicensed`, `ukBestRating`, `ukRoutes`, `ukMatchBasis`, `ukSponsors` (up to 10: organisation, town, ratings, routes) |
| Freshness | `dataAsOf` (latest DOL decision date), `ukRegisterDate`, `data` (fiscal years, index build date, UK register source) |

One real row (Google, run on 2026-10-18, lists shortened):

```json
{
  "type": "employer",
  "input": "Google",
  "employerName": "Google LLC",
  "matchScore": 1,
  "matchType": "alias",
  "h1bCertifiedTotal": 25061,
  "h1bCertifiedLatestFY": 7427,
  "h1bDeniedTotal": 56,
  "permCertifiedTotal": 1615,
  "topJobTitle": "Software Engineer",
  "topJobTitleMedianWage": 183000,
  "ukLicensed": true,
  "ukBestRating": "A (Premium)",
  "ukRoutes": ["Global Business Mobility: Senior or Specialist Worker", "Skilled Worker"],
  "ukMatchBasis": "brand-map",
  "matchedEmployers": [{"name": "Google LLC", "otherFiledNames": ["GOOGLE LLC"], "score": 1, "matchType": "alias", "h1bCertified": 25038, "permCertified": 1608}],
  "h1bByFiscalYear": [{"fiscalYear": 2024, "certified": 8825, "certifiedWithdrawn": 49, "denied": 30, "withdrawn": 185, "workerPositionsCertified": 8825}],
  "visaClasses": {"H-1B": 25086, "E-3 Australian": 319, "H-1B1 Singapore": 66, "H-1B1 Chile": 52},
  "topJobTitles": [{"title": "Software Engineer", "employer": "Google LLC", "filings": 15251, "wageP10": 153000, "medianWage": 183000, "wageP90": 223000, "wageLevelMix": "I <1% · II 49% · III 14% · IV 3% · no level 34%", "medianWageByLevel": "I $144,000 · II $186,000 · III $218,000 · IV $258,000 · no level $167,000"}],
  "worksiteStates": [{"state": "CA", "filings": 16971}, {"state": "WA", "filings": 2887}, {"state": "NY", "filings": 2774}],
  "employerWageLevelMix": "I 1% · II 43% · III 20% · IV 8% · no level 28%",
  "employerMedianWageByLevel": "I $142,000 · II $182,000 · III $202,633 · IV $230,565 · no level $167,000",
  "ukSponsors": [{"organisation": "Google (UK) Limited", "town": "London", "typesAndRatings": ["Worker (A (Premium))"], "routes": ["Skilled Worker", "Global Business Mobility: Senior or Specialist Worker"], "ukMatchBasis": "brand-map"}],
  "dataAsOf": "2026-06-30",
  "ukRegisterDate": "2026-10-16",
  "data": {"usFiscalYears": [2024, 2025, 2026], "usLatestFiscalYearPartial": true, "usIndexBuiltAt": "2026-10-13", "usDataAsOf": "2026-06-30", "ukRegisterDate": "2026-10-16", "ukRegisterSource": "live"}
}
```

**Salary benchmark.** Add `benchmarkTitles` (for example `["Software Engineer", "Data Scientist"]`) and `topJobTitles` keeps only the employer's filed titles similar to yours, each tagged with the benchmark it matched. The **Salary benchmark** view shows one row per employer and title, ready to compare across companies. `topJobTitle` stays the employer's most-filed title.

**Jobs mode** (`"mode": "jobs"`) pulls a company's live openings from its Greenhouse, Lever, Ashby, Personio or Teamtailor board (use board names or URLs, such as `airbnb` or `https://jobs.lever.co/spotify`) and adds to each job:

- `sponsorScore` (0-100) and `evidence`: how much the filing record shows for this job's title, employer and country, in one plain sentence such as *"Certified 3 H-1B/E-3 LCAs for titles like "Data Engineer" in FY2024–FY2026, 67% at level III. Employer total: 150 certified LCAs (67 in FY2026) and 31 certified PERM cases."*
- `sponsorSignal` (`strong`, `some`, `none`) and `sponsorReason`.
- `similarFiledTitle`, `similarTitleMedianWage` and `similarTitleWageLevelMix`: the employer's most-filed similar title, its median wage and the level mix of similar filings.
- `ukBestRating`, `ukMatchBasis`, and `sponsorEvidence` with the full detail, including `possibleMatches` that were not counted.

Every job also has the usual job fields: title, location, country, remote or hybrid, salary range, posting date and apply link.

**How the score is built**, only from the public record:

| Job country | Points |
|---|---|
| US (or unknown) | Similar title: up to 60 for certified LCAs for titles like this one (1 filing → 20, 10 → 40, 100+ → 60). Employer: up to 25 for all its certified LCAs (1 → 5, 10 → 12, 100 → 18, 1,000+ → 25). +10 for any certified LCA in the latest fiscal year, +5 for any certified PERM case |
| UK | Licensed sponsor 50, +30 for the Skilled Worker route, +20 for an A rating (+10 for Provisional) |
| Elsewhere | Capped at 20: the US and UK records say nothing about other countries |

The other country's record (a UK licence for a US job, or US filings for a UK job) counts for at most 10 points. For a US job, filings for other titles score at most 40, so a score above 40 means the employer has filed for similar titles.

**What the wage levels mean.** Most H-1B filings state a prevailing wage from the DOL survey at one of four levels: **I** entry, **II** qualified, **III** experienced, **IV** fully competent. A mix weighted to III-IV means the employer mostly sponsors experienced hires for that title; I-II means it also sponsors early-career people. **No level** means the prevailing wage came from another source or was blank. Wages are the offered wage, annualised (hourly × 2,080), from certified filings only.

The dataset has three views (**Employers**, **Jobs with sponsorship evidence**, **Salary benchmark**) and exports to JSON, CSV, Excel or HTML. The run's `SUMMARY` record lists every company, the entities matched and why any company had no match.

### How much does it cost?

You pay per record returned: one employer profile or one job. There is no charge for Apify platform usage on top.

| Row | Free and Starter | Scale | Business |
|---|---|---|---|
| Employer profile or job | $2.50 per 1,000 | $1.90 per 1,000 | $1.40 per 1,000 |

Plus $0.00005 per run start. **Apify's free $5 monthly credit covers about 2,000 employer profiles.** Free-plan runs stop at 50 records each; any paid Apify plan removes the cap. You can also set your own limit with **Max results**.

**What's free:** companies with no match, invalid or repeated entries, careers boards that can't be found or reached, jobs removed by your filters (including `onlyWithSponsorEvidence` and `minSponsorScore`), and companies not reached before the run's time limit. A run where every job board is down ends with a message and no record charges. To cap a run's spend, set **Maximum cost per run** in the run options.

### Limits, stated up front

- **Past filings, not a promise.** A certified LCA means the Department of Labor certified the employer's wage attestation. It does not mean a visa was issued, that a job is open, or that the employer will sponsor *you*. A UK licence means the company *can* sponsor. A high `sponsorScore` means many past filings for similar work. Confirm sponsorship with the employer or a qualified immigration lawyer; nothing here is legal advice.
- **US data:** DOL LCA and PERM files for FY2024, FY2025 and FY2026 to date (decisions up to 30 June 2026), aggregated into about 150,000 employers. FY2026 is partial, so `h1bCertifiedLatestFY` is usually lower than earlier years. The index ships with the Actor and is refreshed when DOL publishes a new quarter.
- **UK data:** the register is downloaded live from gov.uk on every run. If gov.uk is slow or unreachable, the bundled snapshot is used and `ukRegisterDate` and `data.ukRegisterSource` say so.
- **Name matching.** Filings use legal names, so both sides are normalised (case, punctuation, legal suffixes such as Inc, LLC, Ltd) and scored: exact 1.00, same without spaces 0.95, the entity starts with your name plus extra words 0.90 minus 0.05 per word, near-identical spelling 0.90 × similarity. **Minimum name-match score** (default 0.8) decides what is counted, and every counted entity is listed in `matchedEmployers`.
- **Big brands are pre-mapped** to the legal entities they file under, per country (about 60 employers): "PwC" counts PricewaterhouseCoopers Advisory Services LLC and its other US entities, "Barclays" its US filers and all its UK licences. Look-alikes such as Apple Tree Dental are left out. Short or generic names that aren't pre-mapped can still pick up unrelated companies: pin them with a **name mapping** such as `Acme = Acme Corporation`.
- **UK matching is stricter.** Each UK match says why it counts in `ukMatchBasis`: `exact`, `trading-name` (listed "t/a" the employer), `brand-map`, `legal-suffix` (jobs mode, only when the employer's own ads or careers domain name that entity) or `unconfirmed` (a similar name only, listed but not counted in jobs mode).
- **Jobs mode** reads only Greenhouse, Lever, Ashby, Personio and Teamtailor boards, and board names match employers strictly (exact name, a built-in alias or your mapping). Near-misses go to `possibleMatches`.
- Up to 500 companies per run. The run needs a timeout of at least 60 seconds; if a long list would outlast it, the run stops cleanly with what it found.
- **Company data only.** From the DOL files only business columns are read; employer contacts, attorneys, agents, preparers and worker fields never are, and individual case records are never output. Employers that are private individuals are removed, and UK sole traders licensed under a personal name show only their business name or are left out. Job records have no recruiter fields, and emails and phone numbers in descriptions are removed.

### Schedules

The US data changes quarterly and the UK register most working days. To track a list of employers, save it as a task and add a weekly or monthly schedule under **Schedules** in Apify Console. A weekly jobs-mode run with `onlyWithSponsorEvidence` on gives a fresh list of openings at employers with a filing record.

### Integrations: API, n8n, Make and AI agents

**API.** Run it and get the rows back in one call:

```bash
curl -X POST "https://api.apify.com/v2/acts/locaihost~visa-sponsors/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"mode": "employers", "companies": ["Google", "Stripe", "Mayo Clinic"]}'
```

Apify's API clients for Python and JavaScript work the same way.

**n8n, Make, Zapier, Google Sheets, Slack, webhooks.** Apify's built-in integrations send each run's dataset wherever you need it.

**AI agents (MCP).** Add this Actor to Claude, Cursor or any MCP client with `https://mcp.apify.com/?tools=locaihost/visa-sponsors`, then ask something like *"Which of Stripe, Figma and Monzo sponsor H-1B software engineers, and what median wage did they file?"*

### FAQ

#### How much does it cost to look up H1B sponsors?

$2.50 per 1,000 employer profiles or jobs on the Free and Starter plans, less on Scale and Business. Companies with no match are free. Apify's free $5 monthly credit covers about 2,000 employer profiles.

#### Can I use it through the API or from Python?

Yes. Use the `run-sync-get-dataset-items` call above, or Apify's Python and JavaScript clients. Every run's data is also available as JSON, CSV or Excel from its dataset.

#### Can I use it from an AI agent?

Yes. Through the Apify MCP server (`https://mcp.apify.com/?tools=locaihost/visa-sponsors`) any MCP client can call it with a list of companies and read the profiles back.

#### Is it legal to use H-1B and UK sponsor data?

The US data comes from the Department of Labor's Office of Foreign Labor Certification performance data (disclosure files): US government work in the public domain. The UK data is the Home Office register of licensed sponsors (workers), which contains public sector information licensed under the Open Government Licence v3.0. Jobs mode reads employers' public job-board feeds. The Actor returns company-level data only. It is not affiliated with or endorsed by the DOL or the Home Office, and you are responsible for how you use the results.

#### Why are some fields empty or lower than expected?

FY2026 is partial, so the latest-year count is usually lower. A company with no US filings has zero US totals but can still have a UK licence, and the other way round. If a company you know sponsors shows nothing, it may file under a different legal name: lower `minMatchScore` to find it, then pin it with a name mapping.

#### Does a certified filing mean the company will sponsor me?

No. It shows what the employer filed in the past. Use it to prioritise and research, and confirm with the employer.

### More from locaihost data

- [LinkedIn Jobs Scraper](https://apify.com/locaihost/linkedin-jobs): LinkedIn job searches with no login, each job flagged with the employer's visa sponsorship record.
- [Indeed Jobs Scraper](https://apify.com/locaihost/indeed-jobs): Indeed jobs across many country sites, with the same sponsorship flags.
- [Careers Page Jobs Scraper](https://apify.com/locaihost/careers-jobs): every open job at a list of companies, from their own Greenhouse, Lever or Ashby boards.
- [Google Jobs Scraper](https://apify.com/locaihost/google-jobs): Google for Jobs listings with salaries, apply links and sponsorship flags.

### Did it help?

If this saved you time, a quick rating on the Store helps other people find it.

### Support

Missing an employer, a field or a country? Open an issue on the **Issues** tab: we answer issues within 24 hours.

# Changelog

This Actor's version history is a separate document: https://apify.com/locaihost/visa-sponsors/changelog.md

# Actor input Schema

## `mode` (type: `string`):

Employers: one sponsorship profile per company (H-1B, PERM, UK licence). Jobs: live openings from the company's careers board, each annotated with sponsorship evidence.

## `companies` (type: `array`):

One per line. Employers mode: a company name (Google, Tata Consultancy Services) or domain (microsoft.com). Jobs mode: a board name (airbnb), careers-board URL (jobs.lever.co/spotify) or ats:token (ashby:ramp). Up to 500.

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

Stop after this many records (employer profiles or jobs). 0 = no limit. Free-plan runs stop at 50 records.

## `nameMappings` (type: `array`):

Pin a company to exact legal filing names, one per line: Company = Legal name | Other legal name. Example: Meta = Meta Platforms, Inc. Mapped companies match only those names (US and UK), no fuzzy matching.

## `minMatchScore` (type: `number`):

0.6–1. 1 = exact legal name only (after removing Inc/LLC/Ltd). 0.8 also includes entities that start with the name plus up to two words (Deloitte Consulting, Amazon Web Services). Every match is listed with its score. Jobs mode always matches board names strictly (exact name, a built-in alias or your name mapping); near-misses are listed as possibleMatches only.

## `includeUk` (type: `boolean`):

Look the company up in the UK Home Office register of licensed sponsors (rating, routes, town).

## `ukRegisterSource` (type: `string`):

Live downloads today's register from gov.uk (about 11 MB). Bundled uses the snapshot shipped with the Actor (dated in the output).

## `maxJobTitles` (type: `integer`):

Employers mode: how many top H-1B job titles (with wage percentiles) to return.

## `benchmarkTitles` (type: `array`):

Job titles to benchmark, e.g. Software Engineer, Data Scientist. The job-title list then shows only the employer's filed H-1B titles that are similar to these, each with its wage-level mix (I–IV) and median wage. Leave empty for the most-filed titles. Up to 50.

## `titleKeywords` (type: `array`):

Keep jobs whose title contains ANY of these words, e.g. engineer, data, designer.

## `locations` (type: `array`):

Keep jobs whose location contains ANY of these, e.g. New York, London, US, GB, Remote.

## `departments` (type: `array`):

Keep jobs whose department or team contains ANY of these, e.g. Engineering.

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

Only jobs posted in the last N days. 0 = any age.

## `remoteOnly` (type: `boolean`):

Only jobs marked fully remote.

## `onlyWithSponsorEvidence` (type: `boolean`):

Skip jobs whose employer has no H-1B/PERM filings and no UK sponsor licence.

## `minSponsorScore` (type: `integer`):

Skip jobs whose sponsorship-evidence score (0–100, from past filings) is below this. 0 = keep every job. For US jobs, filings for other titles score at most 40, so above 40 means the employer has filed for similar titles. UK jobs at a licensed sponsor score 50 or more.

## `includeDescription` (type: `boolean`):

Plain-text job description (contact details removed). Off = smaller, faster exports.

## Actor input object example

```json
{
  "mode": "employers",
  "companies": [
    "Google",
    "Amazon",
    "Infosys",
    "Deloitte",
    "microsoft.com"
  ],
  "maxResults": 0,
  "minMatchScore": 0.8,
  "includeUk": true,
  "ukRegisterSource": "live",
  "maxJobTitles": 15,
  "postedWithinDays": 0,
  "remoteOnly": false,
  "onlyWithSponsorEvidence": false,
  "minSponsorScore": 0,
  "includeDescription": false
}
```

# Actor output Schema

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

One record per company (overview view).

## `jobs` (type: `string`):

Jobs mode: one record per job with its sponsorship evidence.

## `salaryBenchmark` (type: `string`):

Employers mode: one row per employer × job title with wage-level mix and median offered wage.

## `summary` (type: `string`):

Per company: entities matched, records returned, and why any company had no match.

# 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 = {
    "companies": [
        "Google",
        "Amazon",
        "Infosys",
        "Deloitte",
        "microsoft.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("locaihost/visa-sponsors").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 = { "companies": [
        "Google",
        "Amazon",
        "Infosys",
        "Deloitte",
        "microsoft.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("locaihost/visa-sponsors").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 '{
  "companies": [
    "Google",
    "Amazon",
    "Infosys",
    "Deloitte",
    "microsoft.com"
  ]
}' |
apify call locaihost/visa-sponsors --silent --output-dataset

```

## MCP server setup

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

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/sCgz7xESEPV04PLkp/builds/tLmkn0wKZOhzCXOQc/openapi.json
