{
  "openapi": "3.0.1",
  "info": {
    "title": "US Product Recalls Monitor: FDA & CPSC Feed",
    "description": "FDA food, drug and medical device recalls plus CPSC consumer product recalls in one feed, newest first. Filter by date, keyword, firm, class, status or state, and get a severity rating with a plain-English explanation, recall number, reason, quantity, distribution and official link.",
    "version": "1.0",
    "x-build-id": "Hov3xYx4M2bdjHQJX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/offerastudio~us-product-recalls-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-offerastudio-us-product-recalls-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/offerastudio~us-product-recalls-monitor/runs": {
      "post": {
        "operationId": "runs-sync-offerastudio-us-product-recalls-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/offerastudio~us-product-recalls-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-offerastudio-us-product-recalls-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": {
          "sources": {
            "title": "Sources",
            "type": "array",
            "description": "Which official recall databases to read. Default: all four.",
            "items": {
              "type": "string",
              "enum": [
                "fda-food",
                "fda-drug",
                "fda-device",
                "cpsc"
              ],
              "enumTitles": [
                "FDA: food (incl. dietary supplements)",
                "FDA: drugs",
                "FDA: medical devices",
                "CPSC: consumer products (toys, electronics, furniture …)"
              ]
            },
            "default": [
              "fda-food",
              "fda-drug",
              "fda-device",
              "cpsc"
            ]
          },
          "dateFrom": {
            "title": "Date from",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "First report date (US date), e.g. 2026-09-01, or a relative date like \"30 days\" (30 days ago). Leave both dates empty for the last 30 days. FDA recalls are dated by the weekly Enforcement Report they appeared in, CPSC recalls by their announcement date. At most 5 years per run."
          },
          "dateTo": {
            "title": "Date to",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$|^(\\d+)\\s*(day|week|month|year)s?$",
            "type": "string",
            "description": "Last report date (inclusive). Default: today."
          },
          "keyword": {
            "title": "Keyword",
            "type": "string",
            "description": "Keep recalls whose product description, reason, hazard, title, lot codes or UPCs contain this text (not case-sensitive), e.g. peanut, salmonella, lithium, stroller."
          },
          "firmContains": {
            "title": "Firm or company contains",
            "type": "string",
            "description": "Keep recalls where the recalling firm, manufacturer, importer, distributor or retailer name contains this text (not case-sensitive), e.g. Stryker or Walmart."
          },
          "classifications": {
            "title": "FDA classification",
            "type": "array",
            "description": "FDA recalls only. Class I = may cause serious health problems or death; Class II = temporary or reversible health problems; Class III = unlikely to cause health problems. CPSC recalls have no class and are not affected (use Severity to filter them).",
            "items": {
              "type": "string",
              "enum": [
                "Class I",
                "Class II",
                "Class III"
              ],
              "enumTitles": [
                "Class I (most serious)",
                "Class II",
                "Class III (least serious)"
              ]
            }
          },
          "severities": {
            "title": "Severity",
            "type": "array",
            "description": "Keep only recalls with these severity ratings (both FDA and CPSC). High = FDA Class I or a CPSC hazard that can kill or seriously injure; medium = FDA Class II or another CPSC injury hazard; low = FDA Class III.",
            "items": {
              "type": "string",
              "enum": [
                "high",
                "medium",
                "low",
                "unknown"
              ],
              "enumTitles": [
                "High",
                "Medium",
                "Low",
                "Unknown (FDA not yet classified)"
              ]
            }
          },
          "statuses": {
            "title": "FDA recall status",
            "type": "array",
            "description": "FDA recalls only: Ongoing, Completed or Terminated. FDA records the status when it classifies the recall and doesn't always update it later. CPSC recalls have no status and are not affected.",
            "items": {
              "type": "string",
              "enum": [
                "Ongoing",
                "Completed",
                "Terminated"
              ],
              "enumTitles": [
                "Ongoing",
                "Completed",
                "Terminated"
              ]
            }
          },
          "firmLocations": {
            "title": "Firm state or country",
            "type": "array",
            "description": "Keep recalls whose firm is located in one of these places: a US state (CA or California) or a country (Canada, China). FDA: the recalling firm's address. CPSC: the country of manufacture or the location written in the firm names (\"Acme Inc., of Columbus, Georgia\").",
            "items": {
              "type": "string"
            }
          },
          "distributedIn": {
            "title": "Distributed in (US states)",
            "type": "array",
            "description": "FDA recalls only: keep recalls whose distribution pattern names one of these states (CA or California) or says nationwide. CPSC recalls are national and always kept.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Maximum recalls",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Stop after this many recalls (newest first across all sources). Each recall returned costs $0.002.",
            "default": 500
          },
          "openFdaApiKey": {
            "title": "openFDA API key (optional)",
            "type": "string",
            "description": "Not needed for normal use. Without a key openFDA allows 240 requests per minute and 1,000 per day per IP address; a free key (open.fda.gov/apis/authentication) raises the daily limit to 120,000. A typical run makes 1 to 10 requests. Stored encrypted."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}