# openFDA Animal & Veterinary Adverse Event Scraper (`parseforge/openfda-animal-veterinary-scraper`) Actor

Export 1.3M+ veterinary adverse event records from openFDA. Filter by product, animal species (dog, cat, horse, cattle, pig), reaction term, or report date. Pull drug names, manufacturers, reactions, outcomes, animal details, and full case metadata.

- **URL**: https://apify.com/parseforge/openfda-animal-veterinary-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Business, Other, Education
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $11.00 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🐾 openFDA Animal & Veterinary Adverse Event Scraper

> 🚀 **Export the U.S. veterinary pharmacovigilance dataset in seconds.** Pull **1.3M+ adverse event reports** filed with the FDA for animal drugs, with species, breed, age, weight, active ingredients, reactions, and outcomes. No API key, no registration, no manual CSV wrangling.

> 🕒 **Last updated:** 2026-05-22 · **📊 27 fields** per record · **🐶 1.3M+ reports** · **🐾 6 species filters** · **💊 Brand + ingredient search**

The **openFDA Animal & Veterinary Adverse Event Scraper** exports the FDA's Center for Veterinary Medicine pharmacovigilance file and returns **27 structured fields per record**, covering the animal, the product, the reaction, the outcome, and the original report metadata. The underlying corpus is the official U.S. registry of suspected adverse drug events in companion and food animals, sourced from veterinarians, drug sponsors, and pet owners.

The catalog covers **dogs, cats, horses, cattle, pigs, and other species**, every veterinary drug class on the U.S. market, and every reported reaction term from the international VeDDRA dictionary. This Actor makes that data downloadable as CSV, Excel, JSON, or XML in under five minutes. All filters run server-side, so you skip the parser engineering entirely.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Veterinary pharma, pet insurance underwriters, clinical research teams, regulatory affairs analysts, vet schools, animal-health journalists | Pharmacovigilance signal detection, product safety dashboards, claims-risk modeling, label-change research, breed-specific reaction studies |

---

### 📋 What the openFDA Animal & Veterinary Scraper does

Five filtering workflows in a single run:

- 💊 **Product / drug filter.** Brand name or active ingredient (e.g. `meloxicam`, `fipronil`, `spinosad`).
- 🐾 **Species filter.** Dog, cat, horse, cattle, pig, or other.
- 🩺 **Reaction term filter.** Free-text VeDDRA term (e.g. `vomiting`, `lethargy`, `pruritus`).
- 📅 **Date range filter.** Earliest and latest report receive dates.
- 🌐 **Full corpus export.** Leave filters empty to stream the global event file.

Each record includes the unique adverse event report ID, animal demographics, primary product details, every drug administered, every reaction reported, outcomes, the reporter type, the receiving organization, and the full raw record for downstream re-parsing.

> 💡 **Why it matters:** veterinary adverse event signals are scattered across PDF labels, third-party reviews, and clinician anecdote. The FDA pool is the only structured registry. Building your own pipeline means handling pagination, search-syntax escaping, and quarterly schema drift. This Actor skips all of that.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td><code>productName</code></td><td>string</td><td><code>""</code></td><td>Brand or active ingredient name. Case-insensitive partial match.</td></tr>
<tr><td><code>animalSpecies</code></td><td>string</td><td><code>"any"</code></td><td>One of <code>any</code>, <code>dog</code>, <code>cat</code>, <code>horse</code>, <code>cattle</code>, <code>pig</code>, <code>other</code>.</td></tr>
<tr><td><code>reactionTerm</code></td><td>string</td><td><code>""</code></td><td>VeDDRA reaction term such as <code>vomiting</code> or <code>death</code>.</td></tr>
<tr><td><code>dateFrom</code>, <code>dateTo</code></td><td>string (YYYY-MM-DD)</td><td><code>null</code></td><td>Report receive date window.</td></tr>
</tbody>
</table>

**Example: 50 dog reactions to spinosad in 2024.**

```json
{
    "maxItems": 50,
    "productName": "spinosad",
    "animalSpecies": "dog",
    "dateFrom": "2024-01-01",
    "dateTo": "2024-12-31"
}
````

**Example: every reported death in cattle.**

```json
{
    "maxItems": 200,
    "animalSpecies": "cattle",
    "reactionTerm": "death"
}
```

> ⚠️ **Good to Know:** adverse event reports are voluntary and unverified. Multiple reports for the same brand do not establish causation. Cross-check signals against the product label, sponsor's periodic safety update, and peer-reviewed literature before making clinical or regulatory decisions.

***

### 📊 Output

Each report record contains **27 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🆔 `uniqueAerId` | string | `"USA-USFDACVM-2024-US-012345"` |
| 📄 `reportId` | string | `"012345"` |
| 📅 `originalReceiveDate` | string | `"2024-03-14"` |
| 📅 `onsetDate` | string | null | `"2024-03-10"` |
| ⚠️ `seriousAe` | string | `"Yes"` |
| 🏷️ `typeOfInformation` | string | `"Adverse Event"` |
| 🌍 `foreignOrDomestic` | string | `"Domestic"` |
| 🐾 `animalSpecies` | string | `"Dog"` |
| ♂️♀️ `animalGender` | string | null | `"Female"` |
| 🐩 `animalBreed` | string | null | `"Labrador Retriever"` |
| ⏳ `animalAgeYears` | number | null | `7` |
| ⚖️ `animalWeightKg` | number | null | `32.5` |
| 💊 `primaryProductBrand` | string | null | `"Comfortis"` |
| 🏭 `primaryProductManufacturer` | string | null | `"Elanco"` |
| 🧪 `primaryProductActiveIngredients` | array | `["spinosad"]` |
| 💉 `primaryProductRoute` | string | null | `"Oral"` |
| 💊 `primaryProductDosageForm` | string | null | `"Tablet"` |
| 🐕 `numberOfAnimalsAffected` | number | null | `1` |
| 🐕 `numberOfAnimalsTreated` | number | null | `1` |
| 🏥 `treatedForAe` | string | null | `"Yes"` |
| 🤒 `reactions` | array | `["Vomiting", "Lethargy"]` |
| 🩺 `outcomes` | array | `["Recovered"]` |
| 👤 `primaryReporter` | string | null | `"Veterinarian"` |
| 🏛️ `receiverOrganization` | string | `"FDA-CVM"` |
| 💊 `drugs` | array | `[{...}]` |
| 📦 `fullRecord` | object | `{...}` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-22T00:00:00.000Z"` |

#### 📦 Sample records

<details>
<summary><strong>🐕 Dog reaction to a flea/tick chewable</strong></summary>

```json
{
    "uniqueAerId": "USA-USFDACVM-2024-US-012345",
    "reportId": "012345",
    "originalReceiveDate": "2024-03-14",
    "onsetDate": "2024-03-10",
    "seriousAe": "No",
    "typeOfInformation": "Adverse Event",
    "foreignOrDomestic": "Domestic",
    "animalSpecies": "Dog",
    "animalGender": "Female",
    "animalBreed": "Labrador Retriever",
    "animalAgeYears": 7,
    "animalWeightKg": 32.5,
    "primaryProductBrand": "Comfortis",
    "primaryProductManufacturer": "Elanco",
    "primaryProductActiveIngredients": ["spinosad"],
    "primaryProductRoute": "Oral",
    "primaryProductDosageForm": "Tablet",
    "numberOfAnimalsAffected": 1,
    "numberOfAnimalsTreated": 1,
    "treatedForAe": "Yes",
    "reactions": ["Vomiting", "Lethargy"],
    "outcomes": ["Recovered"],
    "primaryReporter": "Veterinarian",
    "receiverOrganization": "FDA-CVM",
    "scrapedAt": "2026-05-22T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🐈 Cat ivermectin sensitivity report</strong></summary>

```json
{
    "uniqueAerId": "USA-USFDACVM-2023-US-098765",
    "animalSpecies": "Cat",
    "animalBreed": "Domestic Shorthair",
    "primaryProductBrand": "Heartgard",
    "primaryProductActiveIngredients": ["ivermectin"],
    "reactions": ["Ataxia", "Mydriasis", "Tremor"],
    "outcomes": ["Recovered with sequela"],
    "seriousAe": "Yes",
    "scrapedAt": "2026-05-22T00:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🐄 Cattle herd-level vaccine reaction</strong></summary>

```json
{
    "uniqueAerId": "USA-USFDACVM-2024-US-054321",
    "animalSpecies": "Cattle",
    "numberOfAnimalsAffected": 18,
    "numberOfAnimalsTreated": 200,
    "primaryProductBrand": "Bovi-Shield Gold",
    "reactions": ["Anaphylactic reaction"],
    "outcomes": ["Died"],
    "scrapedAt": "2026-05-22T00:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🐾 | **Full species coverage.** Dogs, cats, horses, cattle, pigs, and the long tail of other species. |
| 💊 | **Brand or active ingredient.** Search the trade name or fall back to the chemical for richer recall. |
| 🩺 | **VeDDRA reactions.** International dictionary terms enable cross-study harmonization. |
| ⚡ | **Fast.** 10 reports in under 5 seconds, 10,000 records in roughly a minute. |
| 🏛️ | **Official source.** Reports filed directly with the FDA Center for Veterinary Medicine. |
| 🔁 | **Always fresh.** Every run pulls the latest published quarter, so signals reflect current pharmacovigilance. |
| 🚫 | **No authentication.** Public data, no login or token required. |

> 📊 Structured adverse event data is the foundation of every veterinary safety signal, product label change, and pet insurance underwriting model.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ openFDA Vet Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **1.3M+** reports | **Live per run** | product, species, reaction, date | ⚡ 2 min |
| Manual FDA portal browsing | Free | Single-record only | Quarterly | UI filters | 🐢 Hours |
| Commercial pharmacovigilance suites | $25,000+/year | Multi-source signal | Daily | Many | ⏳ Weeks |
| Academic data dumps | Free | Snapshot, stale | Annual | None | 🕒 Days |

Pick this Actor when you want structured, filterable, current data with no contract.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the openFDA Animal & Veterinary Adverse Event Scraper page on the Apify Store.
3. 🎯 **Set input.** Pick a product or species, optionally add a reaction term and date range, and set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your data.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 💊 Veterinary Pharma

- Pharmacovigilance signal detection by ingredient
- Pre-launch competitor reaction profile review
- Label-change evidence gathering
- Periodic safety update report inputs

</td>
<td width="50%" valign="top">

#### 🐾 Pet Insurance

- Claims-risk modeling by breed and product
- Underwriting flags for high-risk medications
- Reserve-setting based on outcome distributions
- Loss-prevention education content

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 🩺 Clinical Research

- Breed-specific sensitivity meta-analyses
- Reaction-frequency baselines for trial design
- Real-world evidence for academic papers
- Comparative safety reviews

</td>
<td width="50%" valign="top">

#### 📰 Health Journalism

- Investigative reporting on recalls
- Brand-safety scorecards for consumer outlets
- Trend coverage by species or drug class
- Sourced data visualizations

</td>
</tr>
</table>

***

### 🔌 Automating openFDA Animal & Veterinary Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Hourly, daily, or weekly refreshes keep downstream databases in sync automatically.

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Veterinary epidemiology coursework datasets
- Reproducible pharmacovigilance studies
- Comparative pharmacology theses
- Open-data exercises on regulatory transparency

</td>
<td width="50%">

#### 🎨 Personal and creative

- Pet-owner safety blogs and newsletters
- Side projects for vet tech tooling
- Portfolio data-visualization demos
- Hobbyist breed-health research

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Animal welfare advocacy reports
- Civic transparency on drug recalls
- Investigative journalism on product safety
- Open data contributions to vet community wikis

</td>
<td width="50%">

#### 🧪 Experimentation

- Train safety-signal classification models
- Validate AI vet-triage product hypotheses
- Prototype regulatory-monitoring agents
- Test dashboard concepts with real reports

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20openFDA%20Animal%20%26%20Veterinary%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20openFDA%20Animal%20%26%20Veterinary%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20openFDA%20Animal%20%26%20Veterinary%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20openFDA%20Animal%20%26%20Veterinary%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Set your product, species, reaction, or date filters in the input form, click Start, and the Actor pulls reports from the openFDA Animal & Veterinary pharmacovigilance file. No browser automation, no captchas, no setup.

#### 📏 How complete is the dataset?

The corpus holds over 1.3 million reports going back to the late 1980s. Modern coverage (2010 onward) is the most complete, since electronic reporting was standardized then.

#### 🔁 How often is the dataset refreshed?

The FDA publishes new reports on a quarterly cadence. Every run of this Actor fetches the latest published quarter at request time.

#### 🐎 Does it cover horses and food animals?

Yes. Set `animalSpecies` to `horse`, `cattle`, or `pig`, or pick `other` for exotics, poultry, and small ruminants.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor on any cron interval and keep a downstream safety-signal database in sync.

#### ⚖️ Is this data legal to use?

The underlying reports are released by the FDA as public-domain U.S. government data. Review your own downstream use for HIPAA-equivalent veterinary privacy concerns where applicable.

#### 💼 Can I use this data commercially?

Yes. Public U.S. government data may be redistributed and used commercially. You remain responsible for downstream regulatory compliance.

#### 💳 Do I need a paid Apify plan?

No. The free plan is enough for testing and small runs (10 records per run). A paid plan lifts the limit and unlocks scheduling, higher concurrency, and larger datasets.

#### 🔁 What happens if a run fails?

Apify retries transient errors automatically. You can inspect the log in the Runs tab, adjust the input, and re-run. Partial datasets are preserved.

#### 📚 Why are some brand-name searches empty?

Reporters often record the active ingredient instead of the brand name. If a brand search comes back empty, retry with the ingredient (e.g. `spinosad` instead of `Comfortis`).

#### 🆘 What if I need help?

Our support team is here to help. Reach us via the Apify platform or the Tally form linked below.

***

### 🔌 Integrate with any app

openFDA Animal & Veterinary Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe pharmacovigilance data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh adverse event signals into your safety dashboard, or alert your team in Slack.

***

### 🔗 Recommended Actors

- [**🏥 ClinicalTrials.gov Scraper**](https://apify.com/parseforge/clinicaltrials-gov-scraper) - U.S. and global clinical trial registry
- [**🧬 GBIF Biodiversity Scraper**](https://apify.com/parseforge/gbif-biodiversity-scraper) - Species occurrence and taxonomy data
- [**📜 Florida DFS Licensee Scraper**](https://apify.com/parseforge/florida-dfs-licensee-scraper) - Licensed professionals in Florida
- [**📚 Figshare Scraper**](https://apify.com/parseforge/figshare-scraper) - Open research datasets and articles
- [**📖 arXiv Scraper**](https://apify.com/parseforge/arxiv-scraper) - Preprint research papers across sciences

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more reference-data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the FDA, the Center for Veterinary Medicine, or any drug sponsor. All trademarks mentioned are the property of their respective owners. Only publicly available open government data is collected.

# Actor input Schema

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `productName` (type: `string`):

Brand or active ingredient name (free text, case-insensitive). Examples: 'spinosad', 'milbemycin', 'fipronil', 'meloxicam'. Brand-name coverage in adverse event reports varies — try the active ingredient if a brand returns no matches. Leave empty to retrieve all products.

## `animalSpecies` (type: `string`):

Filter records by reported animal species.

## `reactionTerm` (type: `string`):

Free-text VeDDRA reaction term. Examples: 'vomiting', 'lethargy', 'pruritus', 'death'.

## `dateFrom` (type: `string`):

Earliest report receive date. Format: YYYY-MM-DD. Leave empty for no lower bound.

## `dateTo` (type: `string`):

Latest report receive date. Format: YYYY-MM-DD. Leave empty for no upper bound.

## Actor input object example

```json
{
  "maxItems": 10,
  "animalSpecies": "any"
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10,
    "animalSpecies": "any"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/openfda-animal-veterinary-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxItems": 10,
    "animalSpecies": "any",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/openfda-animal-veterinary-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "animalSpecies": "any"
}' |
apify call parseforge/openfda-animal-veterinary-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/openfda-animal-veterinary-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "openFDA Animal & Veterinary Adverse Event Scraper",
        "description": "Export 1.3M+ veterinary adverse event records from openFDA. Filter by product, animal species (dog, cat, horse, cattle, pig), reaction term, or report date. Pull drug names, manufacturers, reactions, outcomes, animal details, and full case metadata.",
        "version": "1.0",
        "x-build-id": "YKDuEW1fwa3A7UA5m"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~openfda-animal-veterinary-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-openfda-animal-veterinary-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/parseforge~openfda-animal-veterinary-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-openfda-animal-veterinary-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/parseforge~openfda-animal-veterinary-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-openfda-animal-veterinary-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": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "productName": {
                        "title": "Product / Drug Name",
                        "type": "string",
                        "description": "Brand or active ingredient name (free text, case-insensitive). Examples: 'spinosad', 'milbemycin', 'fipronil', 'meloxicam'. Brand-name coverage in adverse event reports varies — try the active ingredient if a brand returns no matches. Leave empty to retrieve all products."
                    },
                    "animalSpecies": {
                        "title": "Animal Species",
                        "enum": [
                            "any",
                            "dog",
                            "cat",
                            "horse",
                            "cattle",
                            "pig",
                            "other"
                        ],
                        "type": "string",
                        "description": "Filter records by reported animal species."
                    },
                    "reactionTerm": {
                        "title": "Reaction Term",
                        "type": "string",
                        "description": "Free-text VeDDRA reaction term. Examples: 'vomiting', 'lethargy', 'pruritus', 'death'."
                    },
                    "dateFrom": {
                        "title": "Date From (YYYY-MM-DD)",
                        "type": "string",
                        "description": "Earliest report receive date. Format: YYYY-MM-DD. Leave empty for no lower bound."
                    },
                    "dateTo": {
                        "title": "Date To (YYYY-MM-DD)",
                        "type": "string",
                        "description": "Latest report receive date. Format: YYYY-MM-DD. Leave empty for no upper bound."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
