Skip to main content
GET
https://api.deeprecall.io
/
v1
/
recalls
/
feed
Get Recalls Feed
curl --request GET \
  --url https://api.deeprecall.io/v1/recalls/feed \
  --header 'X-API-Key: <x-api-key>'
{
  "success": true,
  "data": [
    {
      "id": 123,
      "data_source": "<string>",
      "source_case_id": "<string>",
      "source_url": "<string>",
      "alert_title": "<string>",
      "alert_summary": "<string>",
      "risk_severity": "<string>",
      "risk_types": [
        {}
      ],
      "hazard_description": "<string>",
      "measure_types": [
        {}
      ],
      "measure_details": "<string>",
      "product_category": "<string>",
      "product_name": "<string>",
      "product_brand": "<string>",
      "product_model_numbers": [
        {}
      ],
      "product_description": "<string>",
      "packaging_description": "<string>",
      "production_dates": "<string>",
      "images": [
        {}
      ],
      "standard_identifiers_and_barcodes": [
        {}
      ],
      "involved_parties": [
        {}
      ],
      "standards_cited": [
        {}
      ],
      "geo_jurisdictions": [
        {}
      ],
      "notifying_authority": "<string>",
      "country_of_origin": "<string>",
      "counterfeit": "<string>",
      "alert_status": "<string>",
      "published_at": "<string>",
      "updated_at": "<string>",
      "created_in_db_at": "<string>"
    }
  ],
  "pagination": {
    "total_count": 123,
    "returned_count": 123,
    "limit": 123,
    "has_more": true,
    "next_cursor": "<string>"
  },
  "rate_limit": {},
  "data_sources": {}
}

Overview

The /recalls/feed endpoint returns a paginated list of product recalls from the past 24 hours based on their published_at timestamp (when the recall was officially published by the regulatory agency).
This is a FEED endpoint - it only provides the past 24 hours of recalls.
Contact us for bulk exports or historical data:

Authentication

X-API-Key
string
required
Your DeepRecall API key (starts with dr_live_)

Query Parameters

data_sources
string
Comma-separated list of data source IDs to filter by (e.g., 2 sources)Example: safety_gate,rappel_conso or us_cpsc,uk_opssIf not provided, returns all authorized sources for your account.Use /v1/recalls/sources to see your available sources.
hours_ago
integer
default:"24"
Number of hours to look back from now
  • Minimum: 1
  • Maximum: 24 (HARD LIMIT - this is a feed, not historical data)
  • Default: 24
Filters based on the published_at field.
limit
integer
default:"50"
Number of items to return per page
  • Minimum: 1
  • Maximum: 500
  • Default: 50
cursor
string
Pagination cursor from the previous responseUse the next_cursor value from the previous page to get the next page of results.
sort_by
string
default:"published_at"
Field to sort results byOptions:
  • published_at (default) - When recall was officially published
  • created_in_db_at - When record was added to DeepRecall
  • updated_at - When record was last updated
sort_order
string
default:"desc"
Sort orderOptions:
  • desc (default) - Newest first
  • asc - Oldest first

Response

success
boolean
required
Whether the request was successful
data
array
required
Array of recall objects
pagination
object
required
Pagination metadata
rate_limit
object
Current rate limit status
data_sources
object
Data source authorization info

Example Request

curl -X GET "https://api.deeprecall.io/v1/recalls/feed?limit=5&data_sources=us_cpsc" \
  -H "X-API-Key: dr_live_your_api_key_here"

Example Response

{
  "success": true,
  "data": [
    {
      "id": 109226,
      "data_source": "us_cpsc",
      "source_case_id": "26-141",
      "source_url": "https://www.cpsc.gov/Recalls/2026/...",
      "alert_title": "Uuoeebb Infant Walkers Recalled Due to Risk of Serious Injury",
      "alert_summary": "Fall and entrapment hazards",
      "risk_severity": "high",
      "risk_types": ["injury", "death"],
      "hazard_description": "The recalled infant walkers violate the mandatory standard...",
      "measure_types": ["recall", "stop_use"],
      "measure_details": "Consumers should stop using immediately...",
      "product_category": "Baby Products",
      "product_name": "Uuoeebb Infant Walkers",
      "product_brand": "BaoD",
      "product_model_numbers": ["7654"],
      "product_description": "Collapsible infant walker with round base, eight wheels...",
      "packaging_description": null,
      "production_dates": "2024-2025",
      "images": ["https://cdn.cpsc.gov/image1.jpg"],
      "standard_identifiers_and_barcodes": [],
      "involved_parties": [
        {
          "name": "Hunan Suihuo E-commerce Co., Ltd.",
          "role": "Importer",
          "country": "China"
        }
      ],
      "standards_cited": [],
      "geo_jurisdictions": ["US"],
      "notifying_authority": "CPSC",
      "country_of_origin": "China",
      "counterfeit": null,
      "alert_status": "active",
      "published_at": "2025-12-11T00:00:00",
      "updated_at": "2025-12-11T00:00:00",
      "created_in_db_at": "2025-12-11T01:23:45.678901+00:00"
    }
  ],
  "pagination": {
    "total_count": 1250,
    "returned_count": 5,
    "limit": 5,
    "has_more": true,
    "next_cursor": "eyJpZCI6MTA5MjI2fQ=="
  },
  "meta": {
    "filters_applied": {
      "hours_ago": 24,
      "data_sources": ["us_cpsc"],
      "sort_by": "published_at",
      "sort_order": "desc"
    },
    "processing_time_ms": 145,
    "timestamp": "2025-12-19T17:30:00.123456+00:00"
  },
  "rate_limit": {
    "limits": {
      "per_minute": 60,
      "per_hour": 1000,
      "per_day": 10000
    },
    "remaining_credits": 49500,
    "monthly_quota": 50000,
    "monthly_usage": 500
  },
  "data_sources": {
    "available": ["us_cpsc", "uk_opss", "eu_safety_gate"],
    "requested": ["us_cpsc"],
    "filtered": ["us_cpsc"]
  }
}

Error Responses

{
  "detail": {
    "error": "invalid_api_key",
    "message": "Invalid or missing API key",
    "help": "Provide a valid API key using the X-API-Key header..."
  }
}
{
  "detail": {
    "error": "unauthorized_data_sources",
    "message": "You don't have access to the requested data sources",
    "details": {
      "requested": ["us_fda"],
      "authorized": ["us_cpsc", "uk_opss"]
    },
    "help": "Use the /recalls/sources endpoint to see your authorized sources..."
  }
}
{
  "detail": {
    "error": "validation_error",
    "message": "Invalid sort_by field: invalid_field",
    "details": {
      "provided": "invalid_field",
      "valid_fields": ["created_in_db_at", "published_at", "updated_at"]
    },
    "help": "Valid sort fields are: created_in_db_at, published_at, updated_at"
  }
}
{
  "detail": {
    "error": "rate_limit_exceeded",
    "message": "Rate limit exceeded: 60 requests per minute",
    "details": {
      "limit_type": "minute",
      "limit": 60,
      "reset_at": "2025-12-19T17:45:30Z"
    },
    "help": "You've exceeded your rate limit. Wait for the limit to reset..."
  }
}

Pagination Example

import requests

url = "https://api.deeprecall.io/v1/recalls/feed"
headers = {"X-API-Key": "dr_live_your_api_key_here"}

all_recalls = []
cursor = None

while True:
    params = {"limit": 100}
    if cursor:
        params["cursor"] = cursor
    
    response = requests.get(url, headers=headers, params=params)
    data = response.json()
    
    all_recalls.extend(data['data'])
    
    if not data['pagination']['has_more']:
        break
    
    cursor = data['pagination']['next_cursor']

print(f"Total recalls: {len(all_recalls)}")

Get Data Sources

See your available data sources
Need data in a custom format? (e.g., /v1/recalls/feed/shein)