{
  "openapi": "3.0.1",
  "info": {
    "title": "FDA PMA Medical Device Approvals Scraper (openFDA)",
    "description": "Scrape FDA Premarket Approval (PMA) medical device decisions from openFDA. Get PMA number, applicant, trade and generic name, product code, specialty, supplement type, decision and dates. Export JSON, CSV, Excel.",
    "version": "0.1",
    "x-build-id": "QdahuWRlUVgLoSxHq"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapers_lat~fda-pma-device-approvals-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapers_lat-fda-pma-device-approvals-scraper",
        "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/scrapers_lat~fda-pma-device-approvals-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapers_lat-fda-pma-device-approvals-scraper",
        "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/scrapers_lat~fda-pma-device-approvals-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapers_lat-fda-pma-device-approvals-scraper",
        "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": {
          "searchQuery": {
            "title": "Search query",
            "type": "string",
            "description": "Free-text search against the device trade name, or a raw openFDA expression (e.g. trade_name:\"stent\"). Leave empty to browse all PMA records with the filters below."
          },
          "applicant": {
            "title": "Applicant (company)",
            "type": "string",
            "description": "Filter by the applicant company that holds the PMA (exact phrase match), e.g. Medtronic, Abbott, Boston Scientific."
          },
          "tradeName": {
            "title": "Trade name",
            "type": "string",
            "description": "Filter by the device trade (brand) name."
          },
          "genericName": {
            "title": "Generic name",
            "type": "string",
            "description": "Filter by the device generic name / type, e.g. Coronary Drug-Eluting Stent."
          },
          "productCode": {
            "title": "Product code",
            "type": "string",
            "description": "Filter by the 3-letter FDA product code, e.g. NIQ, ONU, LPL."
          },
          "specialty": {
            "title": "Medical specialty",
            "enum": [
              "Cardiovascular",
              "Ophthalmic",
              "General, Plastic Surgery",
              "Microbiology",
              "Neurology",
              "Gastroenterology, Urology",
              "Orthopedic",
              "Pathology",
              "Clinical Chemistry",
              "Ear, Nose, Throat",
              "Immunology",
              "General Hospital",
              "Obstetrics/Gynecology",
              "Anesthesiology",
              "Radiology",
              "Dental",
              "Hematology"
            ],
            "type": "string",
            "description": "Filter by the FDA advisory committee (medical specialty) that reviewed the device."
          },
          "decisionCode": {
            "title": "Decision code",
            "enum": [
              "APPR",
              "OK30",
              "APWD",
              "APRL",
              "APCB",
              "APCV",
              "DENY"
            ],
            "type": "string",
            "description": "Filter by FDA decision code. APPR = approved, OK30 = 30-day notice acknowledged, APWD = approved then withdrawn, APRL = approvable, DENY = denied."
          },
          "supplementType": {
            "title": "Supplement type",
            "enum": [
              "Normal 180 Day Track",
              "Real-Time Process",
              "30-Day Notice",
              "Panel Track",
              "Special (Immediate Track)",
              "Normal 180 Day Track No User Fee",
              "135 Review Track For 30-Day Notice"
            ],
            "type": "string",
            "description": "Filter by PMA supplement track."
          },
          "state": {
            "title": "Applicant state",
            "type": "string",
            "description": "Filter by the applicant's US state (2-letter code), e.g. CA, MN, MA."
          },
          "pmaNumber": {
            "title": "PMA number",
            "type": "string",
            "description": "Look up a specific PMA number, e.g. P160049."
          },
          "expeditedOnly": {
            "title": "Expedited review only",
            "type": "boolean",
            "description": "Only return devices that received expedited (priority) FDA review.",
            "default": false
          },
          "originalOnly": {
            "title": "Original approvals only",
            "type": "boolean",
            "description": "Only return original PMA approvals (exclude later supplements / notices).",
            "default": false
          },
          "dateFrom": {
            "title": "Date from",
            "type": "string",
            "description": "Start date (YYYY-MM-DD) for the selected date field."
          },
          "dateTo": {
            "title": "Date to",
            "type": "string",
            "description": "End date (YYYY-MM-DD) for the selected date field."
          },
          "dateField": {
            "title": "Date field",
            "enum": [
              "decision_date",
              "date_received"
            ],
            "type": "string",
            "description": "Which date the date range applies to.",
            "default": "decision_date"
          },
          "sortOrder": {
            "title": "Sort order",
            "enum": [
              "",
              "Newest first",
              "Oldest first"
            ],
            "type": "string",
            "description": "Sort results by the selected date field.",
            "default": ""
          },
          "withSummary": {
            "title": "AI plain-English summary (add-on, paid)",
            "type": "boolean",
            "description": "Opt-in. Add a 1-2 sentence plain-English AI summary of what each device is and what the approval covers. Billed per record only when a summary is produced. Disabled for free accounts.",
            "default": false
          },
          "withClassify": {
            "title": "AI device classification (add-on, paid)",
            "type": "boolean",
            "description": "Opt-in. Add AI device category, affected body system, risk level and keyword tags per record. Billed per record only when a classification is produced. Disabled for free accounts.",
            "default": false
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of PMA records to return. Free Apify accounts are capped at 10 per run.",
            "default": 50
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. openFDA is a public no-key API; a proxy is not required. Provided for users who prefer to route traffic through Apify Proxy."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}