{
  "openapi": "3.0.1",
  "info": {
    "title": "UK Visa Sponsor Register Tracker (Daily Changes)",
    "description": "Track new, removed and downgraded UK visa sponsors daily from the official Home Office register, or check if a company holds a sponsor licence. For job boards, recruiters and immigration lawyers. Organisations only, no API key. JSON via API or MCP. $5/1,000 rows.",
    "version": "0.1",
    "x-build-id": "UI0ddf5hj3DlcoLcB"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/japan-open-data~uk-visa-sponsor-register/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-japan-open-data-uk-visa-sponsor-register",
        "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/japan-open-data~uk-visa-sponsor-register/runs": {
      "post": {
        "operationId": "runs-sync-japan-open-data-uk-visa-sponsor-register",
        "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/japan-open-data~uk-visa-sponsor-register/run-sync": {
      "post": {
        "operationId": "run-sync-japan-open-data-uk-visa-sponsor-register",
        "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": "Mode",
            "enum": [
              "lookup",
              "changes"
            ],
            "type": "string",
            "description": "\"lookup\": is this company a licensed visa sponsor? Returns one row per licence (organisation x visa route) on today's register. \"changes\": what changed since your last run with the same filters? Returns one row per new licence, removed licence or rating change (e.g. A to B downgrade). The first \"changes\" run only saves a baseline and returns one free row; schedule it daily (the register is updated on working days).",
            "default": "lookup"
          },
          "companyNames": {
            "title": "Company names",
            "type": "array",
            "description": "Company names to check or to watch, e.g. [\"Deloitte\", \"Monzo Bank Ltd\"]. Each name matches any registered name that contains it at the start of a word (case and punctuation ignored), or only the same name when \"nameMatch\" is \"exact\". A name with no match gets one free not_found row. Leave empty to search or watch the whole register (narrowed by town, route and rating). Up to 500 names.",
            "default": [
              "Deloitte",
              "Monzo",
              "Google"
            ],
            "items": {
              "type": "string"
            }
          },
          "nameMatch": {
            "title": "Name matching",
            "enum": [
              "contains",
              "exact"
            ],
            "type": "string",
            "description": "\"contains\" (default): \"Monzo\" matches \"Monzo Bank Ltd\". \"exact\": the whole name must match, ignoring case, punctuation, \"Ltd\"/\"Limited\"/\"PLC\"/\"LLP\" and \"UK\".",
            "default": "contains"
          },
          "towns": {
            "title": "Towns / cities",
            "type": "array",
            "description": "Only licences registered in these towns or cities, e.g. [\"London\", \"Manchester\"] (the register's own Town/City column, case ignored). Leave empty for all of the UK.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "routes": {
            "title": "Visa routes",
            "type": "array",
            "description": "Only these visa routes, written as on the register, e.g. [\"Skilled Worker\"]. Others include \"Global Business Mobility: Senior or Specialist Worker\", \"Creative Worker\", \"Charity Worker\", \"Religious Worker\", \"International Sportsperson\", \"Scale-up\", \"Seasonal Worker\", \"Government Authorised Exchange\", \"International Agreement\", \"Global Business Mobility: Graduate Trainee\" and \"Global Business Mobility: UK Expansion Worker\". Leave empty for all routes.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "rating": {
            "title": "Rating",
            "enum": [
              "any",
              "A",
              "B",
              "Provisional"
            ],
            "type": "string",
            "description": "Only licences with this rating. \"A\" includes \"A (Premium)\" and \"A (SME+)\". \"B\" means the Home Office has downgraded the sponsor and it cannot assign new certificates of sponsorship until it follows an action plan. \"Provisional\" is the UK Expansion Worker provisional rating.",
            "default": "any"
          },
          "groupByOrganisation": {
            "title": "One row per organisation (lookup mode)",
            "type": "boolean",
            "description": "Lookup mode only. Off: one row per licence (an organisation licensed for Skilled Worker and for Senior or Specialist Worker gives two rows). On: one row per organisation and town, with its routes and ratings joined by \"; \" and a licenceCount.",
            "default": false
          },
          "maxResults": {
            "title": "Maximum rows",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Maximum number of charged rows (1 to 200000). Leave empty for the default: 100 in lookup mode, 10000 in changes mode. Lookup mode splits it evenly between the company names; names that get no row because the limit ran out are listed in one free not_found row. In changes mode, changes beyond this limit are not lost: they are returned by the next run. The whole register is about 132,000 organisation licences."
          },
          "watchlistName": {
            "title": "Watchlist name (changes mode, optional)",
            "type": "string",
            "description": "Changes mode keeps the previous register in your own Apify storage (key-value store \"uk-visa-sponsor-register-state\"), one copy per set of filters. If you run two schedules with the SAME filters, give each a different name here (e.g. \"crm-sync\", \"weekly-report\") so that each gets every change. Leave empty otherwise.",
            "default": ""
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}