USDA FSIS Recalls Scraper avatar

USDA FSIS Recalls Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
USDA FSIS Recalls Scraper

USDA FSIS Recalls Scraper

Scrape USDA Food Safety and Inspection Service (FSIS) recall data - meat, poultry, and egg product recalls and public health alerts. Search by keyword, establishment, state, or classification; filter by recall type, reason, processing category, and date range.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Share

Scrape USDA Food Safety and Inspection Service (FSIS) recall data — meat, poultry, and egg product recalls and public health alerts regulated by USDA. Search by keyword, recalling establishment, state, or classification; filter by recall type, reason, processing category, date range, and outbreak linkage. Pulls the full public FSIS recall feed directly, no login or API key required.

Looking for FDA recalls (most other foods, drugs, cosmetics, medical devices)? See the separate FDA Recalls Scraper — this actor covers only meat/poultry/egg products regulated by USDA's FSIS.

What this actor does

  • Five modes: recent, search, byEstablishment, byState, byClassification
  • Rich filters: classification, recall type, recall reason(s), processing categories, states, date range, active-only, outbreak-related-only, has-Spanish-version-only, language (English/Spanish/Any)
  • Full recall detail: cleaned plain-text summary, official recall document PDF links (labels, retail lists, import lists), media/company contacts, affected states, product descriptions
  • Sorted newest-first by recall date
  • Empty fields are omitted — every record only contains fields FSIS actually populated

Output per recall

  • recallNumber, title
  • languageEnglish or Spanish (which language version of the notice this record is)
  • recallType — Active Recall / Closed Recall / Public Health Alert
  • classification — Class I / Class II / Class III / Public Health Alert
  • riskLevel
  • recallReasons[]
  • recallDate, lastModifiedDate, year, closedYear
  • establishments[] — recalling company/establishment name(s)
  • states[] — distribution states (or Nationwide/Midwest)
  • processingCategories[]
  • productItems[] — affected product descriptions
  • summary — cleaned plain-text press release
  • recallUrl — canonical FSIS recall page
  • labelPdfUrls[] — official recall document PDFs (product labels, retail-distribution lists, import lists, etc.) linked from the press release, when FSIS published one
  • mediaContact, companyMediaContact[]
  • activeNotice, archived, outbreakRelated, hasSpanishVersion — booleans
  • qtyRecovered
  • sourceUrl, recordType: "recall", scrapedAt

Input

FieldTypeDefaultDescription
modestringrecentrecent / search / byEstablishment / byState / byClassification
keywordstringchickenFree-text query over title/summary/product/establishment (mode=search)
establishmentNamestringPartial match on recalling company (mode=byEstablishment)
languagestringEnglishEnglish / Spanish / Any — FSIS publishes a separate full record per language, sharing the same recall number
statesarrayUS states/territories, or Nationwide/Midwest (mode=byState)
classificationstringClass I / Class II / Class III / Public Health Alert (mode=byClassification)
recallTypestringActive Recall / Closed Recall / Public Health Alert
recallReasonsarrayOne or more of the 9 FSIS recall reasons
processingCategoriesarrayOne or more of the 10 FSIS processing categories
dateFrom / dateTostringYYYY-MM-DD recall-date bounds
activeOnlyboolfalseOnly currently-active recalls
outbreakRelatedOnlyboolfalseOnly recalls linked to an outbreak investigation
hasSpanishOnlyboolfalseOnly recalls with a Spanish-language notice
maxItemsint50Hard cap (1–2000)
proxyConfigurationobjectApify Proxy (AUTO)Optional; not required for access (see Data Source below)

Example: recent recalls (no filters)

{ "mode": "recent", "maxItems": 20 }

Example: keyword search with classification + date range

{
"mode": "search",
"keyword": "listeria",
"classification": "Class I",
"dateFrom": "2024-01-01",
"dateTo": "2025-12-31",
"maxItems": 100
}

Example: all recalls from a specific establishment

{ "mode": "byEstablishment", "establishmentName": "Tyson", "maxItems": 50 }

Example: active recalls distributed to specific states

{
"mode": "byState",
"states": ["California", "Texas", "Nationwide"],
"activeOnly": true
}

Use cases

  • Food safety monitoring — track meat/poultry/egg recalls by company, region, or hazard type
  • Compliance / supply-chain risk — screen suppliers/establishments for recall history
  • Consumer safety apps — surface active recalls relevant to a shopper's state
  • Public health research — analyze recall reasons and outbreak linkage trends over time
  • Journalism — track high-classification recalls and affected retailers

Data source & reliability notes

Data comes directly from FSIS's public recall feed (fsis.usda.gov/fsis/api/recall/v/1), which is unauthenticated and requires no registration. The fsis.usda.gov domain is protected by Akamai bot management: requests from plain HTTP clients (curl, httpx, requests) with no browser TLS fingerprint are blocked with a 403 from Akamai's edge — regardless of source IP, User-Agent header, or Referer. This actor uses curl_cffi with Chrome TLS impersonation, which the upstream site accepts, so no API key, login, cookies, or paid proxy tier is needed. An optional Apify Proxy (AUTO group, free) input is offered for additional resilience but is not required for the actor to return data.

Known caveat: the same Akamai protection also blocks plain, non-impersonated curl checks against recallUrl and labelPdfUrls pages (403 from a clean shell). These URLs are genuine and load normally in any real browser or Chrome-impersonating HTTP client — this is a site-wide anti-bot posture, not a broken link.

FAQ

What's the difference between this and the FDA Recalls Scraper? FDA and USDA-FSIS are separate US regulatory agencies with non-overlapping food categories. FSIS regulates meat, poultry, and processed egg products; FDA regulates virtually everything else (produce, seafood, packaged/prepared foods, dietary supplements, drugs, cosmetics, medical devices). If a recall involves raw or processed meat/poultry/eggs, it's FSIS; otherwise it's FDA.

How far back does the data go? The feed includes recalls from 2014 through the present, refreshed by FSIS as new recalls and public health alerts are issued.

What's a "Public Health Alert"? A notice FSIS issues when a product poses a health risk but a formal recall isn't requested — often because the product is no longer available for purchase.

What's the difference between classification and riskLevel? They're closely related FSIS fields: classification is the formal recall class (Class I/II/III or Public Health Alert); riskLevel is FSIS's plain-language risk label (e.g. "High - Class I"). Both are included since FSIS publishes them as distinct fields.

Why might labelPdfUrls be empty on some records? FSIS doesn't publish a document PDF (product label, retail-distribution list, import list, etc.) for every recall (older/simpler recalls often omit it). The field is populated only when FSIS embedded a PDF link — of any of these document types — in the official press release.

How fresh is the data? As fresh as FSIS's own feed — recalls and public health alerts typically appear within hours of being issued.

Why is there a language field/filter, and why does it default to English-only? FSIS's feed contains a fully separate record for the Spanish translation of many recalls (same recallNumber, translated title/summary/product text, language: "Spanish"). Without filtering, an English recall and its Spanish translation would appear as two near-duplicate records. The default (English) returns one record per recall; set language to Spanish or Any if you want the translated notices too.