Remulous Labs › APIs › SponsorLens
Immigration · DOL OFLCSponsorLens API
Normalized, source-linked U.S. foreign-labor-certification records from the Department of Labor OFLC disclosure files — 728,000+ certifications across H-1B, H-1B1, E-3, PERM, H-2A, and H-2B. Every record carries its offered + prevailing wage (annualized) and links back to its official OFLC source file.
What you can build
One API instead of ETL-ing DOL's quarterly, schema-shifting Excel dumps — see the full comparison, or browse H-1B sponsors & wages.
"Does this company sponsor?"
Count, roles, worksite states, and full history for any employer — across H-1B, PERM, and the seasonal programs.
Wage benchmarking
P25/P50/P75/P90 offered + prevailing wages by SOC occupation, employer, or stock ticker — annualized so hourly and salaried roles compare directly.
PERM (green-card) pipeline
Track who sponsors permanent residency, for which occupations and worksites.
Public-company sponsor profiles
120+ major employers mapped to parent company and stock ticker — query by ticker=NVDA.
Endpoints
Base URL https://sponsorlens-api.remulouslabs.com — proxied for you by RapidAPI. /v1/openapi.json and /healthz are open (no key).
Filterable, paginated certification list (newest decision first).
A single certification by its stable id.
Sponsorship history for one employer (normalized substring match) — profile a company across programs, roles, and states.
Offered + prevailing wage percentiles (P25 / P50 / P75 / P90 + mean), annualized. Requires at least one of soc_code, employer, or ticker.
Per-program coverage and freshness — record count, parse rate, latest decision date, last ingest run.
Totals, counts by program, covered programs, and source attribution.
Parameters for /v1/certifications
| Parameter | Type | Description |
|---|---|---|
employer | string | Substring match on the normalized employer name. |
program | string | h-1b, h-1b1, e-3, perm, h-2a, h-2b. |
case_status | string | certified, certified-withdrawn, denied, withdrawn. |
worksite_state | string | 2-letter state code (e.g. WA). |
soc_code | string | SOC occupation code (e.g. 15-1252). |
ticker | string | Parent-company stock ticker (e.g. NVDA). |
min_wage | number | Minimum annualized offered wage (unit-agnostic). |
fiscal_year | integer | DOL fiscal year (e.g. 2026). |
decision_from / decision_to | date | Filter by decision date (YYYY-MM-DD). |
limit / offset | integer | Page size (default 50; capped by plan) and pagination offset. |
Try it
Your X-RapidAPI-Key comes from your RapidAPI subscription. Pick a language:
Request
curl -X GET "https://sponsorlens-h-1b-labor-cert-api.p.rapidapi.com/v1/certifications?employer=nvidia&program=h-1b&limit=1" \
-H "X-RapidAPI-Key: YOUR_KEY_HERE" \
-H "X-RapidAPI-Host: sponsorlens-h-1b-labor-cert-api.p.rapidapi.com"const url =
"https://sponsorlens-h-1b-labor-cert-api.p.rapidapi.com/v1/certifications?employer=nvidia&program=h-1b&limit=1";
const res = await fetch(url, {
headers: {
"X-RapidAPI-Key": "YOUR_KEY_HERE",
"X-RapidAPI-Host": "sponsorlens-h-1b-labor-cert-api.p.rapidapi.com"
}
});
const data = await res.json();
console.log(data.certifications);import requests
url = "https://sponsorlens-h-1b-labor-cert-api.p.rapidapi.com/v1/certifications"
headers = {
"X-RapidAPI-Key": "YOUR_KEY_HERE",
"X-RapidAPI-Host": "sponsorlens-h-1b-labor-cert-api.p.rapidapi.com",
}
params = {"employer": "nvidia", "program": "h-1b", "limit": 1}
data = requests.get(url, headers=headers, params=params).json()
print(data["certifications"])Response
{
"count": 1190,
"limit": 1,
"offset": 0,
"filters": { "employer": "nvidia", "program": "h-1b" },
"certifications": [
{
"id": "0e18043133d39b7b",
"employer": "NVIDIA Corporation",
"employer_normalized": "nvidia",
"parent_company": "NVIDIA Corporation",
"ticker": "NVDA",
"program": "h-1b",
"case_number": "I-200-25357-504356",
"case_status": "certified",
"job_title": "Software Engineer",
"soc_code": "15-1252.00",
"soc_title": "Software Developers",
"worksite_city": "Redmond",
"worksite_state": "WA",
"wage": { "from": 212202.0, "to": 235750.0, "unit": "year",
"annual_from": 212202.0, "annual_to": 235750.0 },
"prevailing_wage": { "amount": 212202.0, "unit": "year", "annual": 212202.0 },
"received_date": "2025-12-22",
"decision_date": "2025-12-30",
"fiscal_year": 2026,
"provenance": {
"source": "DOL-OFLC-LCA",
"source_url": "https://www.dol.gov/.../LCA_Disclosure_Data_FY2026_Q1.xlsx",
"parse_status": "parsed",
"ingested_at": "2026-06-11T23:43:14+00:00"
}
}
],
"disclaimer": "Derived from the U.S. Department of Labor OFLC public disclosure files..."
}
Wage percentiles
/v1/wages returns annualized offered and prevailing wage percentiles for the matching certifications — the benchmarking core of the API.
GET /v1/wages?ticker=NVDA&program=h-1b
{
"ticker": "NVDA", "program": "h-1b",
"offered_wage": { "p25": 168000, "p50": 196000, "p75": 216091, "p90": 238171, "mean": 205102, "sample_size": 1167 },
"prevailing_wage": { "p25": 161179, "p50": 186197, "p75": 213512, "p90": 226158, "mean": 186062, "sample_size": 1167 },
"note": "wages annualized to a yearly basis regardless of reported unit"
}
Response fields
| Field | Notes |
|---|---|
id | Stable, deterministic identifier (dedupes re-ingested cases). |
employer / employer_normalized | Raw and normalized company name. |
parent_company / ticker | Entity resolution — 120+ employers mapped to parent and ticker; null when unresolved. |
program | h-1b, h-1b1, e-3, perm, h-2a, h-2b. |
case_number / case_status | DOL case number and outcome. |
job_title / soc_code / soc_title | Role and standardized occupation. |
worksite_city / worksite_state | Worksite location, where the source provides it. |
wage | from / to / unit as filed, plus annual_from / annual_to. |
prevailing_wage | amount / unit as filed, plus annual. |
received_date / decision_date / begin_date / end_date | Filing and employment dates. |
fiscal_year | DOL fiscal year of the disclosure file. |
provenance | source, source_url, parse_status, parser, ingested_at, processing_days, date_anomaly. |
Field availability varies by program and fiscal year — DOL changes column layouts between releases. Use /v1/programs/{program}/status and /v1/meta for the live coverage map.
Coverage & freshness
728,000+ certifications across FY2024–FY2026, with FY2026 current through the latest ingested OFLC release.
| Program | Records |
|---|---|
| H-1B | 312,017 |
| PERM (green card) | 299,373 |
| H-2A (agricultural) | 64,174 |
| H-2B (seasonal non-ag) | 42,505 |
| E-3 | 7,827 |
| H-1B1 | 2,753 |
Quarterly updates
Refreshed ~1–2 months after each OFLC release. The live freshness map is always /v1/programs/{program}/status and /v1/meta.
Source methodology
DOL publishes quarterly Excel disclosure files with shifting column layouts. SponsorLens does the fetch, parse, normalize, de-dup, wage-annualization, and provenance-linking — each record links to its OFLC source_url.
Errors & usage
| Status | Meaning |
|---|---|
200 | Success. |
400 | Invalid parameter, or /v1/wages called without soc_code, employer, or ticker. |
404 | No certification / employer found. |
Data & usage notes
- Derived from official DOL OFLC disclosure files and provided as is — filings may contain errors, amendments, late filings, or duplicates. Verify against
source_url. - Certification of an application is not a guarantee a visa was issued — it reflects a DOL labor-certification filing, not an approved or active visa.
- Informational / development use only — not legal or immigration advice, and not for eligibility decisions about individuals (FCRA-regulated uses and individual targeting prohibited). See Terms of Use.
Frequently asked questions
Common questions about visa sponsorship data, coverage, and the API.
What visa programs does SponsorLens cover?
H-1B, H-1B1, E-3, PERM, H-2A, and H-2B certifications from the Department of Labor's Office of Foreign Labor Certification (OFLC) disclosure data. All programs are queryable through the same GET /v1/certifications endpoint using the program parameter.
How do I look up H-1B sponsors by employer?
Query /v1/certifications?employer=nvidia&program=h-1b. The employer parameter does partial-string matching against the employer name field. You can also use /v1/employers/{name}/certifications for an employer-centric view.
What fiscal years of data are available?
FY2024, FY2025, and FY2026 (partial). FY2026 is current through Q1 for LCA/H-1B programs and through Q2 for PERM, H-2A, and H-2B.
What wage data does the API return?
Each certification includes the offered wage range (wage.from / wage.to, annualized) and the prevailing wage (prevailing_wage.amount, annualized). Both are normalized to annual figures for cross-employer comparability.
What is the source of this data?
All records originate from the Department of Labor's OFLC quarterly disclosure files, published at dol.gov. Each record includes a provenance block with source, source_url, and ingested_at linking back to the original OFLC file.
Can I filter by case status?
Yes. Use the case_status parameter on GET /v1/certifications. Common values include certified, denied, withdrawn, and invalidated.