1. Explore real records
Open the sample explorer. Search USDA Foundation Foods, inspect a record, and copy its JSON. The 8 historical samples work without a key or subscription.
The sample explorer uses local text matching and numbered pages. It is a small selection of source records, not a live API response or a full-dataset search.
2. Choose a dataset
USDA Foundation Foods
Search USDA Foundation Foods and compare nutrient measurements with their units and per-100 g basis.
Compare Foundation Foods protein per 100 g →
Suggested citation: U.S. Department of Agriculture, Agricultural Research Service. FoodData Central, 2026. fdc.nal.usda.gov
Public domain / CC0 1.0. Waztap is independent and is not affiliated with or endorsed by USDA. Waztap structures Foundation Foods from the April 2026 release, preserving source values and units.
Search all datasets and prices →
3. Choose your marketplace
RapidAPI
Choose that dataset's plan, subscribe through RapidAPI, and copy the request generated for the listing's host and endpoint. Keep keys on your server. Plans on RapidAPI and Apify.
Apify
Use the dataset's Apify listing, review the Actor's input fields and charging event, then inspect its dataset output after a run. Apify uses pay-per-event pricing; review the price per completed operation on each dataset page.
Metadata → search → detail
Read dataset metadata to identify the version and successful check. Search with a small limit, then look up a returned record ID. Search endpoints allow up to 50 records per page.
Preserve values and context
- Keep identifiers and exact decimal amounts as strings.
- Null means unknown. Zero is a value.
- Compare nutrient measurements using the same unit and per-100 g basis.
Pagination and failed checks
API pagination uses an opaque next_cursor. Preserve the query, limit and cursor and keep the same dataset version. If it expires with HTTP 410, start a new workflow explicitly. A retry can be another billable request.
An unchanged source check can advance verification without a new import. A failed check does neither. See status and import history for the separate times.