{
  "openapi": "3.0.1",
  "info": {
    "title": "EU Safety Gate recall alerts by GTIN, brand and category",
    "description": "Every product-safety alert the EU Safety Gate publishes, normalised into one row per case, filterable by category, risk level and notifying country, and matchable against your own GTIN or brand watchlist.",
    "version": "0.1",
    "x-build-id": "jBd3sz1deb2nmq35u"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kittiwake~eu-recall-watchlist/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kittiwake-eu-recall-watchlist",
        "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/kittiwake~eu-recall-watchlist/runs": {
      "post": {
        "operationId": "runs-sync-kittiwake-eu-recall-watchlist",
        "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/kittiwake~eu-recall-watchlist/run-sync": {
      "post": {
        "operationId": "run-sync-kittiwake-eu-recall-watchlist",
        "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": {
          "weeks": {
            "title": "Weeks to read",
            "minimum": 1,
            "maximum": 260,
            "type": "integer",
            "description": "How many of the most recent weekly reports to read. The Safety Gate publishes one report every Friday. Ignored when 'Published since' is set.",
            "default": 4
          },
          "sinceDate": {
            "title": "Published since (YYYY-MM-DD)",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Read every weekly report published on or after this date. Overrides 'Weeks to read'. Use this for an incremental daily or weekly schedule: set it to the date of your last run."
          },
          "categories": {
            "title": "Product categories",
            "type": "array",
            "description": "Keep only these Safety Gate categories, e.g. Toys, Electrical appliances and equipment, Cosmetics. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "riskLevels": {
            "title": "Risk levels",
            "type": "array",
            "description": "Keep only these risk levels, e.g. 'Serious risk'. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "notifyingCountries": {
            "title": "Notifying countries",
            "type": "array",
            "description": "Keep only alerts notified by these countries, e.g. Germany, France. Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "alertTypes": {
            "title": "Alert type",
            "type": "array",
            "description": "Keep only these alert types: Consumer or Professional. Leave empty for both.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep only alerts whose product, brand, description, hazard, category, risk type or model number contains any of these words.",
            "items": {
              "type": "string"
            }
          },
          "watchBarcodes": {
            "title": "Watchlist — GTIN / EAN barcodes",
            "type": "array",
            "description": "Your own product barcodes. An alert whose barcode matches one of these is flagged with watchlistMatch. Non-digits are ignored, so 4067683465416 and 4-067683-465416 are the same.",
            "items": {
              "type": "string"
            }
          },
          "watchBrands": {
            "title": "Watchlist — brands",
            "type": "array",
            "description": "Brand names you stock or manufacture. Matched case-insensitively against the alert's brand and product name.",
            "items": {
              "type": "string"
            }
          },
          "onlyWatchlistMatches": {
            "title": "Only return watchlist matches",
            "type": "boolean",
            "description": "Return only the alerts that hit your watchlist. Requires at least one barcode or brand above.",
            "default": false
          },
          "includePictures": {
            "title": "Include product photo URLs",
            "type": "boolean",
            "description": "Add the Safety Gate product photo URLs to each row.",
            "default": false
          },
          "maxAlerts": {
            "title": "Maximum alerts",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many alerts. Leave empty for no limit."
          },
          "requestDelayMs": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 60000,
            "type": "integer",
            "description": "Pause between weekly-report requests. The default is deliberately polite; lowering it is not recommended.",
            "default": 1000
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}