# US Immigrant Visa Interview Scheduling Monitor (NVC) (`nerolabs/us-immigrant-visa-scheduling-monitor`) Actor

Returns which month of documentarily complete immigrant visa cases NVC is scheduling at each US consulate, a verdict for your DQ date, and monitor alerts when it moves. Inputs: post names, category, DQ date, monitorMode. Agent-ready: pay per event (x402 and MCP), no charge for unmatched posts.

- **URL**: https://apify.com/nerolabs/us-immigrant-visa-scheduling-monitor.md
- **Developed by:** [Adam Pearce](https://apify.com/nerolabs) (community)
- **Categories:** Travel, Automation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 post looked ups

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

## US Immigrant Visa Interview Scheduling Monitor (NVC)

Your case is documentarily complete at the National Visa Center and you're waiting for the interview letter. Has NVC reached your month at your consulate yet? This Actor reads the State Department's official **IV Scheduling Status Tool** and tells you, per embassy or consulate, **which month of documentarily complete cases NVC is currently scheduling** for Immediate Relative, Family-Sponsored Preference and Employment-Based Preference immigrant visas, then:

- gives a plain-English **verdict for your own case**: enter your documentarily complete (DQ) date and it says whether NVC has reached your month at that post, and if not, by how many months it is behind,
- in **monitor mode**, reports only what moved since your last check (NVC advanced 3 months, moved back, a category appeared or disappeared),
- and, when you check several posts, **ranks them most-current first**.

The source is the State Department's own tool, updated monthly. The months are theirs, not an estimate; this Actor makes them scheduleable, comparable and diffable.

### Who this is for

- **Applicants** (spouses, parents, children of US citizens, family preference, EB cases) waiting at the NVC stage who refresh the tool every day hoping their month has come up.
- **Immigration attorneys and paralegals** tracking many clients across many posts, every month, on a schedule.
- **AI agents and workflows** that need current NVC scheduling status as structured JSON.

### What you get

One row per post you asked for, for example:

| post | immediateRelative | familyPreference | employment | verdict |
|---|---|---|---|---|
| Ciudad Juarez | Aug-2025 | Aug-2025 | Jul-2023 | NVC is scheduling Immediate Relative cases documentarily complete from Aug 2025; your Nov 2025 is 3 months later, so this post has not reached your case yet. |
| Manila | Feb-2026 | Sep-2025 | May-2023 | NVC is scheduling Immediate Relative cases documentarily complete from Feb 2026, which is 3 months after your Nov 2025. Your case is in the window being scheduled, if a visa number is available. |

Every month is given as the State Department's published text (`"Mar-2025"`) and as `"YYYY-MM"`. An **older month means a longer backlog**. `"N/A"` means the State Department did not publish a month for that post and category; the Actor never invents one.

When you check more than one post, a final `comparison` row (never charged) ranks them most-current first per category and names the most current, e.g. `"mostCurrentPost": { "immediateRelative": "Manila (Feb-2026)" }`.

### Monitor mode

Turn on **Monitor mode** and schedule the Actor. The first run records a baseline for each post. Every later run compares against it and reports only real movement:

- `Immediate Relative (spouse, child or parent of a US citizen): NVC advanced 3 months (Jan-2025 to Apr-2025).`
- `Family-Sponsored Preference (F1 to F4): scheduling month now published at Sep-2023 (was N/A).`
- `The State Department republished the tool (2026-07-08 to 2026-08-07) with no change for this post.`

The State Department updates the tool monthly. A **weekly** schedule catches each update within days at near-zero cost. Use a different **Watchlist ID** per client list so baselines don't overwrite each other.

### Input

| Field | What to enter |
|---|---|
| **Embassies / consulates** | City names as on the tool, one per line: `Ciudad Juarez`, `Manila`, `Mumbai`, `Guangzhou`, `Ho Chi Minh City`. Unambiguous partial names work (`Juarez`). An ambiguous name is reported with the candidates rather than guessed. |
| **Immigrant visa category** | `all` (default), `immediateRelative`, `familyPreference` or `employment`. Pick one category for the clearest verdict. |
| **Your documentarily complete date** | Optional, `YYYY-MM-DD` or `YYYY-MM`. Turns on the per-post verdict. |
| **Monitor mode** | Off = one-time lookup. On = report only what moved since the last run. |
| **Watchlist ID** | Keeps separate monitor histories apart. |
| **Reference mode** | Turn on `listAvailablePosts` to get all 140+ post names and the category keys. Never charged. |

### Pricing

Pay per event, no subscription:

- **$0.02 per post looked up** (one-time lookup mode, verdict included)
- **$0.05 per change detected** (monitor mode, only when something actually moved)
- **$0.005 per unchanged post confirmed** (monitor mode)
- a small run-start fee that covers opening a real browser session to the State Department site ($0.04 per run at the default memory)

Posts that don't match anything, ambiguous names, the comparison row and reference mode are never charged.

**What it actually costs in practice:** watching your one consulate weekly is 4 runs a month, about $0.18 a month. An attorney watching 10 posts weekly: about $0.16 in run fees, $0.20 for 40 unchanged checks, and $0.05 per real change, so under $1 a month.

### FAQ

**Does this tell me my interview date?** No. It tells you which DQ month NVC is currently scheduling at your post, which is exactly what the State Department's tool shows. If NVC has reached your month and a visa number is available (for preference categories, see the Visa Bulletin), expect a scheduling notice soon; the Actor says so in plain English but cannot see your individual case.

**Why does a preference category say an older month than Immediate Relative?** Preference cases can only be scheduled when a visa number is available under the monthly Visa Bulletin, so NVC is often scheduling a much older DQ month for them. Immediate Relative visas have no numerical limit.

**Is this the CEAC case status or the appointment booking system?** No. It reads the State Department's public scheduling-status tool only. It does not log in to CEAC, does not touch any appointment system, and cannot see, book or move individual appointments.

**Why does it need a browser and a proxy?** travel.state.gov sits behind a bot challenge. The Actor uses a real browser through a US residential proxy, which is why there is a small run-start fee. One session reads the whole tool, so checking 30 posts costs almost the same as checking one.

**Is this legal?** The data is a US Government work, in the public domain (17 U.S.C. §105). The State Department's own copyright notice states Consular Affairs information "may be copied and distributed without permission." No State Department seal or trademark is used.

If this saved you from refreshing the NVC tool by hand every morning, a review on the Actor page genuinely helps other applicants find it.

# Actor input Schema

## `posts` (type: `array`):

City names as they appear on the State Department tool, one per line, for example Ciudad Juarez, Manila, Mumbai, Guangzhou, Ho Chi Minh City. Partial names work when unambiguous. Turn on listAvailablePosts below to see all 140+ valid names.

## `category` (type: `string`):

Which column to report and (in monitor mode) watch. immediateRelative = spouse, child or parent of a US citizen. familyPreference = F1 to F4. employment = EB-1 to EB-5. all = every column.

## `documentarilyCompleteDate` (type: `string`):

The date NVC told you your case became documentarily complete (DQ), in YYYY-MM-DD or YYYY-MM. When supplied, each post gets a plain-English verdict: has NVC reached your month for your category yet, and if not, by how many months is it behind. Pick a single category above for the clearest answer.

## `monitorMode` (type: `boolean`):

Compare each post against the months seen on the previous run and report only real movement: NVC advanced or moved back (with the number of months), or a category's month appeared or disappeared. The State Department updates the tool monthly, so a weekly schedule catches each update promptly. The first run records a baseline.

## `watchlistId` (type: `string`):

Keeps separate monitor histories apart. Use a different ID per client list or per schedule so their baselines don't overwrite each other.

## `listAvailablePosts` (type: `boolean`):

Turn this on to get the full list of embassy/consulate names on the tool and the category keys. This mode is never charged.

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

travel.state.gov sits behind Cloudflare. The default (US residential) is the setting confirmed to work; change it only if you have a reason to.

## Actor input object example

```json
{
  "posts": [
    "Ciudad Juarez",
    "Manila",
    "Mumbai"
  ],
  "category": "all",
  "documentarilyCompleteDate": "2025-11-20",
  "monitorMode": false,
  "watchlistId": "default",
  "listAvailablePosts": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "posts": [
        "Ciudad Juarez",
        "Manila",
        "Mumbai"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("nerolabs/us-immigrant-visa-scheduling-monitor").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 = { "posts": [
        "Ciudad Juarez",
        "Manila",
        "Mumbai",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("nerolabs/us-immigrant-visa-scheduling-monitor").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 '{
  "posts": [
    "Ciudad Juarez",
    "Manila",
    "Mumbai"
  ]
}' |
apify call nerolabs/us-immigrant-visa-scheduling-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,nerolabs/us-immigrant-visa-scheduling-monitor"
        }
    }
}

```

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/H9IWEBwYiVZu1zAkh/builds/fG5LUjNhBYcZPX3VO/openapi.json
