# Recalls API

[Tools](/tools) / [Search And Extraction](/tools/category/search-and-extraction) / [Recalls](/tools/public-records/recalls)

Consumer product recalls. A normalized multi-agency recall feed spanning FDA, CPSC, and NHTSA — product, reason, company, classification, and severity.

Category: [Search And Extraction](/tools/category/search-and-extraction)

## Price

$0.0297 per successful call ≈ 33 calls with the $1 signup credit.

Input schema is not available in the local snapshot. Call inspect first; fill body and queryParams as required and replace any pathParams placeholders before running.

## Discover

```sh
curl https://keepbal.com/apis/v1/discover -H 'Authorization: Bearer YOUR_KEEPBAL_KEY' -H 'Content-Type: application/json' -d '{"query":"Recalls"}'
```

## Inspect

```sh
curl https://keepbal.com/apis/v1/inspect -H 'Authorization: Bearer YOUR_KEEPBAL_KEY' -H 'Content-Type: application/json' -d '{"publicId":"public-records/recalls"}'
```

## curl

```sh
curl https://keepbal.com/apis/v1/public-records/recalls \
  -H 'Authorization: Bearer YOUR_KEEPBAL_KEY' \
  -H 'Content-Type: application/json' \
  -d '{}'
```

## MCP run_tool

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run_tool",
    "arguments": {
      "tool": "public-records/recalls",
      "input": {}
    }
  }
}
```

## Python

```python
import json, os, requests

# Inspect first and replace input_data with the required parameters.
input_data = json.loads("{}")
response = requests.post(
    "https://keepbal.com/apis/v1/public-records/recalls",
    headers={"Authorization": "Bearer " + os.environ["KEEPBAL_API_KEY"]},
    json=input_data,
)
response.raise_for_status()
print(response.json())
```

## Errors and billing

Failed provider calls are not charged. HTTP 400 invalid_request means invalid JSON or parameters, including missing pathParams. HTTP 401 missing_api_key or invalid_api_key means authentication is required. HTTP 402 insufficient_credits means insufficient balance; top up before retrying. HTTP 503 provider_unavailable means the provider is unavailable. A pending run can settle later; poll GET /apis/v1/runs/{id} instead of starting another execution.

## How much does this API cost?

$0.0297 per successful call

## How do I start?

Create a KeepBal account with $1 free credit, obtain an API key, and inspect this tool before running it.

## Related tools

- [Author Search](/tools/public-records/author-search) — Find author and researcher profiles by name, with affiliation, publication counts, citation metrics, and most-cited papers for author lookup and disambiguation. — $0.0297 per successful call
- [Fda](/tools/public-records/fda) — FDA recalls and adverse events. Drug, device, and food recall and adverse-event records from openFDA with classification, recalling firm, and reason. — $0.0297 per successful call
- [Lit Review](/tools/public-records/lit-review) — Literature review map in one call. Give a seed paper \(DOI, arXiv id, OpenAlex id, or PMID\) or a topic query and get one structured result: the seed&#39;s references, its cited-by list \(most-cited first\), and semantically related work, deduplicated into one uniform table with title, authors, year, venue, DOI, and citation count. Collapses search, citation lookup, — $0.1188 per successful call
- [Nutrition](/tools/public-records/nutrition) — Food nutrition lookup. Calories, macros, and micronutrients for any food from the USDA FoodData Central database. — $0.01485 per successful call
- [Paper Details](/tools/public-records/paper-details) — Look up a research paper by DOI or scholarly identifier to retrieve its metadata, citation count, references, and citing papers for bibliography research. — $0.04455 per successful call
- [Paper Fulltext](/tools/public-records/paper-fulltext) — Retrieve research paper text divided into sections and locate open-access PDFs using a DOI or scholarly identifier. — $0.0594 per successful call



[Start with $1 free credit](/sign-up)

[Tools](/tools) · [MCP documentation](/docs/mcp)
