{
  "openapi": "3.0.1",
  "info": {
    "title": "H-1B Visa & LCA Sponsor Scraper - Employer Leads",
    "description": "Scrape US DOL H-1B / LCA visa data: sponsoring employers, salaries, job titles, worksites, FEIN, HR contacts (email & phone) and immigration attorneys. Search by employer, job or city, build sponsor profiles, monitor new filings. Independent tool, not affiliated with any government agency.",
    "version": "0.1",
    "x-build-id": "pYamfW046GB9M3xK5"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapesage~h1b-visa-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapesage-h1b-visa-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/scrapesage~h1b-visa-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapesage-h1b-visa-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/scrapesage~h1b-visa-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapesage-h1b-visa-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "What to scrape",
            "enum": [
              "search",
              "employerProfile",
              "caseDetails"
            ],
            "type": "string",
            "description": "search = individual H-1B/LCA filings found by employer, job title and/or city. employerProfile = one aggregated sponsor record per employer (filing volume, salary percentiles, top roles and worksites, legal entities, plus HR contacts and law firms from the newest filings). caseDetails = the full record for specific LCA case numbers.",
            "default": "search"
          },
          "employers": {
            "title": "Employer names",
            "type": "array",
            "description": "Sponsoring employers, e.g. \"Google\", \"Anthropic\", \"Ernst & Young\" or a full legal name like \"Amazon.com Services LLC\". A name matches every employer whose filed legal name STARTS with it, punctuation ignored (\"Morgan Stanley\" finds Morgan Stanley & Co LLC, Morgan Stanley Services Group Inc and the rest). Use the legal name to target one entity. search mode: combined with job titles and cities. employerProfile mode: one sponsor record per name.",
            "items": {
              "type": "string"
            }
          },
          "jobTitles": {
            "title": "Job titles (search)",
            "type": "array",
            "description": "search mode: filings whose job title STARTS with this (case and punctuation ignored), e.g. \"Data Scientist\" (also finds \"Data Scientist II\" and \"Data Scientist, Analytics\"), \"Software Engineer\", \"Product Manager\". \"Software Engineer\" does not include \"Senior Software Engineer\": add each title you want. Employers use their own titles (Amazon files \"Software Development Engineer\"); when a title finds nothing the run lists the titles that employer files. Combined with employers and cities.",
            "items": {
              "type": "string"
            }
          },
          "cities": {
            "title": "Worksite cities (search)",
            "type": "array",
            "description": "search mode: filings whose worksite is in this city, e.g. \"Austin\", \"San Francisco\" or \"Portland, OR\". Matches filed cities that start with it (\"New York\" also finds \"New York City\"); add a state code (\"Portland, OR\") to keep only that state. Combined with employers and job titles.",
            "items": {
              "type": "string"
            }
          },
          "year": {
            "title": "Filing year",
            "enum": [
              "All",
              "2026",
              "2025",
              "2024",
              "2023",
              "2022",
              "2021",
              "2020",
              "2019"
            ],
            "type": "string",
            "description": "Calendar year the Labor Condition Application was submitted. The source holds filings from late 2019 to its latest DOL quarterly update; the current year fills in as DOL publishes each quarter. \"All\" searches every year.",
            "default": "2025"
          },
          "caseNumbers": {
            "title": "LCA case numbers (case details)",
            "type": "array",
            "description": "caseDetails mode: exact LCA case numbers, e.g. \"I-200-24291-412570\". Each returns the complete disclosure record; numbers the source does not hold are listed on the run card.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Start URLs (optional)",
            "type": "array",
            "description": "h1bdata.info URLs to scrape directly: details.php?id=<CASE> (one case) or index.php?em=&job=&city=&year= (a search). Auto-routed; also accepts a linked or uploaded text file of URLs.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "urlsFromFile": {
            "title": "Import URLs from a file",
            "type": "string",
            "description": "Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically."
          },
          "includeCaseDetails": {
            "title": "Include full case details (search)",
            "type": "boolean",
            "description": "search mode: open every filing's case page and return the full LCA record: employer phone, FEIN, NAICS and address, the HR point of contact (name, title, e-mail, phone), the immigration attorney and law firm, worksite address, wage range, prevailing wage and level, and compliance flags. Charged as a full case record. Turn off for fast, lightweight filing rows (employer, title, salary, city, dates, case number).",
            "default": true
          },
          "includeEmployerFirmographics": {
            "title": "Include firmographics & contacts (employer profile)",
            "type": "boolean",
            "description": "employerProfile mode: read the employer's newest filings to attach firmographics (address, phone, FEIN, NAICS, web domain) and the HR contacts and law firms named on them.",
            "default": true
          },
          "minSalary": {
            "title": "Minimum salary (USD/year)",
            "minimum": 0,
            "type": "integer",
            "description": "Only return filings whose annual wage is at least this amount, e.g. 200000 for senior roles. Checked before any case page is opened."
          },
          "certifiedOnly": {
            "title": "Certified filings only",
            "type": "boolean",
            "description": "Only keep filings with the status Certified (drops Withdrawn, Certified - Withdrawn and Denied). The status is on the case page, so with case details turned off each filing's case page is still opened to check it.",
            "default": false
          },
          "withEmailOnly": {
            "title": "Only records with a contact e-mail",
            "type": "boolean",
            "description": "Only keep records that carry at least one e-mail (HR point of contact, attorney or preparer). Applies to full case records and sponsor profiles; lightweight filing rows carry no e-mails.",
            "default": false
          },
          "worksiteStates": {
            "title": "Worksite states (filter)",
            "type": "array",
            "description": "Only keep filings whose worksite is in one of these states. Works with any search, e.g. an employer's filings in Texas only.",
            "items": {
              "type": "string",
              "enum": [
                "AL",
                "AK",
                "AZ",
                "AR",
                "CA",
                "CO",
                "CT",
                "DE",
                "DC",
                "FL",
                "GA",
                "GU",
                "HI",
                "ID",
                "IL",
                "IN",
                "IA",
                "KS",
                "KY",
                "LA",
                "ME",
                "MD",
                "MA",
                "MI",
                "MN",
                "MS",
                "MO",
                "MT",
                "NE",
                "NV",
                "NH",
                "NJ",
                "NM",
                "NY",
                "NC",
                "ND",
                "MP",
                "OH",
                "OK",
                "OR",
                "PA",
                "PR",
                "RI",
                "SC",
                "SD",
                "TN",
                "TX",
                "UT",
                "VT",
                "VI",
                "VA",
                "WA",
                "WV",
                "WI",
                "WY"
              ],
              "enumTitles": [
                "Alabama (AL)",
                "Alaska (AK)",
                "Arizona (AZ)",
                "Arkansas (AR)",
                "California (CA)",
                "Colorado (CO)",
                "Connecticut (CT)",
                "Delaware (DE)",
                "District of Columbia (DC)",
                "Florida (FL)",
                "Georgia (GA)",
                "Guam (GU)",
                "Hawaii (HI)",
                "Idaho (ID)",
                "Illinois (IL)",
                "Indiana (IN)",
                "Iowa (IA)",
                "Kansas (KS)",
                "Kentucky (KY)",
                "Louisiana (LA)",
                "Maine (ME)",
                "Maryland (MD)",
                "Massachusetts (MA)",
                "Michigan (MI)",
                "Minnesota (MN)",
                "Mississippi (MS)",
                "Missouri (MO)",
                "Montana (MT)",
                "Nebraska (NE)",
                "Nevada (NV)",
                "New Hampshire (NH)",
                "New Jersey (NJ)",
                "New Mexico (NM)",
                "New York (NY)",
                "North Carolina (NC)",
                "North Dakota (ND)",
                "Northern Mariana Islands (MP)",
                "Ohio (OH)",
                "Oklahoma (OK)",
                "Oregon (OR)",
                "Pennsylvania (PA)",
                "Puerto Rico (PR)",
                "Rhode Island (RI)",
                "South Carolina (SC)",
                "South Dakota (SD)",
                "Tennessee (TN)",
                "Texas (TX)",
                "Utah (UT)",
                "Vermont (VT)",
                "Virgin Islands (VI)",
                "Virginia (VA)",
                "Washington (WA)",
                "West Virginia (WV)",
                "Wisconsin (WI)",
                "Wyoming (WY)"
              ]
            }
          },
          "maxSearchCombinations": {
            "title": "Max search combinations",
            "minimum": 1,
            "type": "integer",
            "description": "search mode: cap on the number of employer x job title x city searches to run.",
            "default": 60
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of records to return. Filings come newest first and are shared fairly across your employers, job titles and cities.",
            "default": 100
          },
          "monitorMode": {
            "title": "Monitor mode (only new filings)",
            "type": "boolean",
            "description": "For a daily or weekly Schedule: the first run returns the newest filings and remembers the rest as seen; every later run returns only filings that are new since (by case number, per search), and sponsor profiles only once per employer and year. The memory lives in a named key-value store in your account.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Proxy for requests to h1bdata.info. The default Apify Proxy is recommended; the actor uses a fresh IP for every request.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}