{
  "openapi": "3.0.1",
  "info": {
    "title": "Product Recall Monitor Scraper (CPSC, EU Safety Gate, NHTSA)",
    "description": "One monitor for product recalls from CPSC (U.S. consumer products), EU Safety Gate (EU dangerous products) and NHTSA (U.S. vehicle recalls). Unified schema with recall date, product, hazard, risk, remedy and source URL. Schema-validated JSON.",
    "version": "0.2",
    "x-build-id": "TT7YGR9YCmIkYvwh0"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/steadfetch~cpsc-recall-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-steadfetch-cpsc-recall-monitor",
        "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/steadfetch~cpsc-recall-monitor/runs": {
      "post": {
        "operationId": "runs-sync-steadfetch-cpsc-recall-monitor",
        "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/steadfetch~cpsc-recall-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-steadfetch-cpsc-recall-monitor",
        "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": {
          "source": {
            "title": "Source",
            "enum": [
              "all",
              "cpsc",
              "safety-gate",
              "nhtsa"
            ],
            "type": "string",
            "description": "Which source(s) to query. Use cpsc, safety-gate or nhtsa to limit to one source; use all to run CPSC and Safety Gate plus NHTSA when make, model and modelYear are set. Defaults to all.",
            "default": "all"
          },
          "since": {
            "title": "Since date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "Start date (YYYY-MM-DD, inclusive). For CPSC it sets RecallDateStart; for Safety Gate it filters by report publication date. Defaults to 30 days before today when omitted."
          },
          "until": {
            "title": "Until date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "End date (YYYY-MM-DD, inclusive). CPSC only; omit for no upper bound."
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Case-insensitive keyword matched against the recall title and description (CPSC only)."
          },
          "weeksBack": {
            "title": "Weekly reports to read",
            "minimum": 1,
            "maximum": 52,
            "type": "integer",
            "description": "Number of EU Safety Gate weekly reports to download from the official list, newest first. Each report is roughly 90 alerts. Ignored for other sources.",
            "default": 4
          },
          "categories": {
            "title": "Product categories (Safety Gate)",
            "type": "array",
            "description": "Case-insensitive product category filter for Safety Gate, for example [\"Jewellery\",\"Toys\"]. Empty means every category. Ignored for other sources.",
            "items": {
              "type": "string"
            }
          },
          "make": {
            "title": "Make (NHTSA)",
            "type": "string",
            "description": "Vehicle make as used by NHTSA, for example TOYOTA or FORD. Required when source is nhtsa. With source=all, NHTSA runs only when make, model and modelYear are all set."
          },
          "model": {
            "title": "Model (NHTSA)",
            "type": "string",
            "description": "Vehicle model as used by NHTSA, for example CAMRY or F-150. Required when source is nhtsa. With source=all, NHTSA runs only when make, model and modelYear are all set."
          },
          "modelYear": {
            "title": "Model year (NHTSA)",
            "minimum": 1900,
            "maximum": 2100,
            "type": "integer",
            "description": "Four-digit vehicle model year, for example 2024. Required when source is nhtsa. With source=all, NHTSA runs only when make, model and modelYear are all set."
          },
          "maxResults": {
            "title": "Max new recalls",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Maximum number of new recall records to deliver in this run (per source when source=all). Duplicates and filtered records do not count toward this limit.",
            "default": 1000
          },
          "monitorMode": {
            "title": "Monitor mode (only new recalls)",
            "type": "boolean",
            "description": "When enabled, recalls already delivered to this Apify user are not pushed or charged again. Disable for a full backfill. Defaults to true.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}