# USCIS Immigration Processing Times MCP — H-1B & Visa Data (`andrew_avina/uscis-intelligence-mcp`) Actor

Get current USCIS immigration processing times and H-1B employer approval data via a fully MCP-compatible server. Track wait times for I-485 (green card), N-400 (citizenship), H-1B, I-130, I-765, and 50+ other forms across all USCIS service centers. Works directly with Claude ...

- **URL**: https://apify.com/andrew\_avina/uscis-intelligence-mcp.md
- **Developed by:** [Andrew Avina](https://apify.com/andrew_avina) (community)
- **Categories:** MCP servers, Business
- **Stats:** 6 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$3.00 / 1,000 result item returneds

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

## USCIS Immigration Intelligence MCP — Processing Times & H-1B Data

Get current **USCIS immigration processing times** and **H-1B employer approval data** via a fully MCP-compatible server. Track wait times for I-485 (green card), N-400 (citizenship), H-1B, I-130, I-765, and 50+ other forms across all USCIS service centers. Works directly with Claude Desktop, Cursor, GPT-4 plugins, and any MCP client. No API key required.

***

### What This Actor Does

USCIS publishes current processing times for every form type through a live JSON API. This actor fetches that data, normalises it into clean per-form-per-office records, and makes it queryable through an MCP server. It also downloads and caches the USCIS H-1B Employer Data Hub CSV (FY2023), enabling queries about top H-1B sponsors, approval rates, and denial rates by company.

**In batch mode**, the actor fetches all processing time data and pushes it to the Apify dataset along with the top H-1B employers you configure.

**In MCP server mode**, the actor starts a lightweight HTTP server on port 4321 and stays alive for up to 24 hours. Your AI assistant can call any of the 4 MCP tools in real time.

***

### Data Sources

| Source | Endpoint | Auth | Update Frequency |
|--------|---------|------|-----------------|
| USCIS Processing Times API | `https://egov.uscis.gov/processing-times/api/processingTimes.json` | None | Weekly |
| USCIS H-1B Employer Data Hub | `https://www.uscis.gov/sites/default/files/document/data/H-1B_FY2023_Employer_Data_Hub.csv` | None | Annual (FY) |

***

### MCP Tools

#### `get_processing_times`

Query current processing times for a specific form type, office, and/or visa subtype.

```json
{
  "name": "get_processing_times",
  "arguments": {
    "form_type": "I-485",
    "office": "NBC",
    "subtype": "Employment-Based"
  }
}
```

Returns records with: `form_type`, `form_name`, `office`, `office_code`, `subtype`, `processing_months` (midpoint), `min_months`, `max_months`, `last_updated`, `source`.

**Available form types:** I-90, I-129, I-129F, I-130, I-131, I-140, I-290B, I-360, I-485, I-485J, I-526, I-539, I-600, I-601A, I-687, I-730, I-751, I-765, I-800, I-821D, I-829, I-914, I-918, N-336, N-400, N-600, N-600K

**Service center codes:** NBC, TSC, NSC, CSC, VSC, MSC, IOE

#### `list_all_forms`

Get a summary of all USCIS forms with current processing time data — average, min, and max months across all service centers.

```json
{
  "name": "list_all_forms",
  "arguments": {}
}
```

Returns one record per form type with: average processing months, min/max range, number of offices handling that form, and a list of applicable subtypes.

#### `compare_service_centers`

Compare processing times for the same form across all USCIS service centers, sorted fastest to slowest.

```json
{
  "name": "compare_service_centers",
  "arguments": {
    "form_type": "I-765"
  }
}
```

Useful for understanding geographic processing disparities. USCIS does not allow applicants to choose a service center (assignment is automatic based on location), but attorneys can advise clients based on where their case will route.

#### `get_h1b_employers`

Top H-1B sponsoring employers from the USCIS FY2023 Employer Data Hub, sorted by initial approvals.

```json
{
  "name": "get_h1b_employers",
  "arguments": {
    "limit": 50,
    "state": "CA"
  }
}
```

Returns: `employer_name`, `initial_approvals`, `initial_denials`, `continuing_approvals`, `continuing_denials`, `total_approvals`, `approval_rate_pct`, `state`, `city`, `naics_code`.

Filter by `state` (e.g. CA, NY, TX, WA) or `query` for partial employer name match.

***

### Input Parameters (Batch Mode)

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `formType` | string | `""` | USCIS form number (e.g. I-485, N-400) |
| `office` | string | `""` | Service center code/name |
| `subtype` | string | `""` | Visa category / petition subtype |
| `h1bLimit` | integer | `25` | Number of H-1B employers to include |
| `serveMcp` | boolean | `false` | Start MCP server on port 4321 |

***

### Output Record Schema

#### Processing Time Record

```json
{
  "form_type": "I-485",
  "form_name": "Application to Register Permanent Residence or Adjust Status",
  "office": "National Benefits Center",
  "office_code": "NBC",
  "subtype": "Employment-Based Adjustment",
  "processing_months": 13.5,
  "min_months": 7.0,
  "max_months": 20.0,
  "last_updated": "June 15, 2024",
  "source": "uscis.gov"
}
```

#### H-1B Employer Record

```json
{
  "rank": 1,
  "employer_name": "INFOSYS LIMITED",
  "initial_approvals": 28467,
  "initial_denials": 892,
  "continuing_approvals": 31204,
  "continuing_denials": 445,
  "total_approvals": 59671,
  "approval_rate_pct": 98.5,
  "state": "TX",
  "city": "IRVING",
  "naics_code": "541512",
  "source": "uscis.gov/h1b-employer-data-hub",
  "fiscal_year": "FY2023"
}
```

***

### USCIS Form Reference

| Form | Description |
|------|-------------|
| I-485 | Application to Register Permanent Residence or Adjust Status |
| I-130 | Petition for Alien Relatives (family-based green card) |
| I-140 | Immigrant Petition for Alien Workers (EB-1, EB-2, EB-3) |
| I-129 | Petition for Nonimmigrant Worker (H-1B, L-1, O-1, TN) |
| I-765 | Application for Employment Authorization Document (EAD) |
| I-90  | Application to Replace Permanent Resident Card |
| I-131 | Application for Travel Document (Advance Parole, Re-entry Permit) |
| I-539 | Application to Extend or Change Nonimmigrant Status |
| I-751 | Petition to Remove Conditions on Residence (conditional green card) |
| I-526 | Immigrant Petition by Alien Investor (EB-5) |
| I-821D | Consideration of Deferred Action for Childhood Arrivals (DACA) |
| N-400 | Application for Naturalization |
| N-600 | Application for Certificate of Citizenship |

***

### Service Center Reference

| Code | Full Name | Primary Jurisdiction |
|------|----------|---------------------|
| NBC | National Benefits Center | Domestic adjustment of status |
| TSC | Texas Service Center | South-central US, some H-1B |
| NSC | Nebraska Service Center | Central US, employment-based |
| CSC | California Service Center | West Coast, some H-1B |
| VSC | Vermont Service Center | Northeast US |
| MSC | Missouri Service Center | Inland US |
| IOE | USCIS Electronic Immigration System | Online-filed petitions |

***

### Example Use Cases

**Q: How long is the I-485 green card wait at NBC vs. TSC?**

```
Tool: compare_service_centers
form_type: I-485
```

**Q: What is the current processing time for naturalization (N-400)?**

```
Tool: get_processing_times
form_type: N-400
```

**Q: Which tech companies sponsor the most H-1B workers in California?**

```
Tool: get_h1b_employers
state: CA, limit: 25
```

**Q: What are all the forms USCIS is currently processing and how long does each take?**

```
Tool: list_all_forms
```

**Q: How long does an I-765 EAD take at each service center?**

```
Tool: compare_service_centers
form_type: I-765
```

**Q: What is Amazon's H-1B approval rate?**

```
Tool: get_h1b_employers
query: Amazon, limit: 5
```

***

### Use Cases by Audience

**Immigration attorneys:** Give clients accurate processing time estimates by form type and service center. Track processing changes week-to-week by comparing actor runs.

**HR immigration teams:** Know how long sponsored employees will wait for EAD renewals, H-1B extensions, and green cards. Plan onboarding and project staffing accordingly.

**Visa applicants:** Understand whether your case is taking longer than the published processing window before filing a service request.

**Researchers and journalists:** Analyze H-1B employer data for stories about labor market dependence on foreign talent, industry concentration, and approval rate disparities.

**Recruiting / talent acquisition:** Identify the top H-1B sponsors in a given state or industry. Useful for competitive intelligence in tech, healthcare, consulting, and finance sectors.

***

### H-1B Data Notes

- Data is from USCIS FY2023 Employer Data Hub (most recently published complete year)
- "Initial" approvals/denials = new H-1B petitions
- "Continuing" approvals/denials = extensions or amendments for existing H-1B holders
- Approval rate is calculated as `(initial_approvals + continuing_approvals) / total_petitions`
- NAICS codes identify the employer's industry sector
- Large staffing firms (Infosys, Tata, Wipro, Cognizant) typically dominate by volume

***

### MCP Server Mode

Set `serveMcp: true` to start the MCP server. Configure your MCP client:

```json
{
  "mcpServers": {
    "uscis": {
      "url": "http://<apify-run-hostname>:4321"
    }
  }
}
```

**Endpoints:**

- `GET /mcp/tools` — returns all 4 tool schemas
- `POST /mcp/call` — invoke a tool with `{"name": "...", "arguments": {...}}`
- `GET /health` — liveness check (also shows record counts)

***

### Error Handling

All tools catch exceptions and return structured error records rather than crashing:

```json
[{"_meta": {"error": "...", "fallback_tried": true}}]
```

If the USCIS processing times API is unavailable, tools return error meta-records. If the H-1B CSV fails to download (CDN issues, URL rotation), `get_h1b_employers` returns an error record with the attempted source URL.

***

### License

USCIS data is in the public domain (US government work). Actor code is MIT-licensed.

# Actor input Schema

## `formType` (type: `string`):

USCIS form number to query. Examples: I-485 (green card adjustment), I-130 (family petition), N-400 (naturalization), I-765 (employment authorization), I-90 (green card renewal), I-140 (immigrant worker petition), I-129 (nonimmigrant worker), I-539 (extend/change status), I-751 (remove conditions), I-131 (travel document). Leave empty to return all forms.

## `office` (type: `string`):

USCIS office or service center code/name. Common codes: NBC (National Benefits Center), TSC (Texas Service Center), NSC (Nebraska Service Center), CSC (California Service Center), VSC (Vermont Service Center), MSC (Missouri Service Center), IOE (online/ELIS). Leave empty for all offices.

## `subtype` (type: `string`):

Petition subtype or visa category. Examples: 'Employment-Based Adjustment', 'Family-Based Adjustment', 'Asylum', 'H-1B', 'L-1A', 'O-1 Extraordinary Ability'. Case-insensitive partial match. Leave empty for all subtypes.

## `h1bLimit` (type: `integer`):

Number of top H-1B sponsoring employers to include in the dataset output (by initial approvals). Default 25, max 500.

## `serveMcp` (type: `boolean`):

When enabled, starts an MCP-compatible HTTP server on port 4321 instead of running a batch query. Use this to connect Claude Desktop, Cursor, or any MCP client to live USCIS data. Exposes 4 tools: get\_processing\_times, list\_all\_forms, compare\_service\_centers, get\_h1b\_employers. The actor will run continuously until stopped.

## Actor input object example

```json
{
  "formType": "",
  "office": "",
  "subtype": "",
  "h1bLimit": 25,
  "serveMcp": false
}
```

# 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("andrew_avina/uscis-intelligence-mcp").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("andrew_avina/uscis-intelligence-mcp").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 andrew_avina/uscis-intelligence-mcp --silent --output-dataset

```

## MCP server setup

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

```

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/d9cO6PTUW3j62ssi3/builds/7LoeD8rIlfD2rQ2Ls/openapi.json
