{
  "openapi": "3.0.1",
  "info": {
    "title": "Global Entry Appointment Alerts - NEXUS, SENTRI, No Login",
    "description": "Tired of refreshing the CBP site for an interview slot? Checks every Global Entry, NEXUS, SENTRI and FAST centre and returns only NEW open slots, near you or before your trip. No login. Schedule it, get a webhook.",
    "version": "1.0",
    "x-build-id": "qDtaqbyAFXdSAF08P"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/that_red_bird~global-entry-appointment-alerts/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-that_red_bird-global-entry-appointment-alerts",
        "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/that_red_bird~global-entry-appointment-alerts/runs": {
      "post": {
        "operationId": "runs-sync-that_red_bird-global-entry-appointment-alerts",
        "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/that_red_bird~global-entry-appointment-alerts/run-sync": {
      "post": {
        "operationId": "run-sync-that_red_bird-global-entry-appointment-alerts",
        "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",
        "properties": {
          "programs": {
            "title": "Programs",
            "type": "array",
            "description": "Trusted traveler programs to check. Global Entry, NEXUS, SENTRI and FAST (US/Canada and US/Mexico). Interview slots are the same CBP scheduler data the booking site shows; no login is used.",
            "items": {
              "type": "string",
              "enum": [
                "Global Entry",
                "NEXUS",
                "SENTRI",
                "FAST"
              ]
            },
            "default": [
              "Global Entry"
            ]
          },
          "beforeDate": {
            "title": "Only slots on or before (YYYY-MM-DD)",
            "type": "string",
            "description": "Keep only interview slots on or before this date, for example 2026-12-31. Leave empty for no date limit.",
            "default": ""
          },
          "zip": {
            "title": "Your ZIP or postal code",
            "type": "string",
            "description": "US ZIP (10001) or Canadian postal code (M5V). Used with 'Within miles' to keep only enrolment centres near you. Leave empty to check all centres.",
            "default": ""
          },
          "latitude": {
            "title": "Latitude (optional)",
            "type": "string",
            "description": "Alternative to ZIP: your latitude as text, for example 40.7128. Needs longitude too. Overrides ZIP when both are set.",
            "default": ""
          },
          "longitude": {
            "title": "Longitude (optional)",
            "type": "string",
            "description": "Your longitude as text, for example -74.0060. Used together with latitude.",
            "default": ""
          },
          "maxMiles": {
            "title": "Within miles",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Straight-line distance from your ZIP or coordinates. Only applies when a ZIP or coordinates are given. Centres outside the US and Canada have no distance and are skipped when this filter is active.",
            "default": 100
          },
          "locationIds": {
            "title": "Only these centre IDs",
            "type": "array",
            "description": "Optional list of CBP location IDs, for example 5140 (JFK) or 5446 (SFO). Leave empty to check every centre that currently has slots.",
            "default": [],
            "items": {
              "type": "string"
            }
          },
          "maxLocations": {
            "title": "Max centres per run",
            "minimum": 1,
            "maximum": 400,
            "type": "integer",
            "description": "How many enrolment centres with open slots to look at per run (nearest first when a ZIP is given). Each one checked costs a small 'location checked' fee.",
            "default": 10
          },
          "maxSlotsPerLocation": {
            "title": "Slots per centre",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Report at most this many of the soonest slots per centre per run.",
            "default": 2
          },
          "stateStoreName": {
            "title": "Alert memory (named store)",
            "type": "string",
            "description": "Turns on ALERT mode. Pick a name such as my-ge-alerts; the Actor remembers slots it already reported and returns only NEW ones on every later run, and charges 'slot found' only for those. Leave empty for a PREVIEW of the current soonest slots (nothing remembered, no slot-found charges). Use the same name on every scheduled run.",
            "default": ""
          },
          "webhookUrl": {
            "title": "Webhook URL (optional)",
            "type": "string",
            "description": "In alert mode, new slots are POSTed here as JSON with 'text' and 'content' fields, so Slack, Discord, Mattermost and Telegram bridges (and Zapier/Make) accept it. Leave empty for none.",
            "default": ""
          },
          "maxAlertsPerRun": {
            "title": "Max new slots per run",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Safety cap on how many new slots one run reports (and charges for).",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}