Results

Search published test results

Read. Search Laboratory.love’s published product-test records. Use this before answering whether a product, brand, or category has been tested, then call getResult for measurements. Covers chemicals that come from plastics (phthalates, BPA and other bisphenols, and phthalate substitutes), the usual meaning of "plastic chemicals" in food; it does not measure microplastic particles, so say so if someone asks about microplastics. Each record is either laboratory_love_commissioned (Laboratory.love bought retail samples and paid an independent lab) or plasticlist_derived (historical data imported from PlasticList with attribution; Laboratory.love did not run that testing). Say which when you answer. Do not imply that a result represents every unit of a product. An empty result means no published record matched — not that a product is free of these chemicals. Default sort: relevance when q is given, otherwise most recent first; ties break on id, so paging is deterministic.

get/results

Request

  • Base URL: https://www.laboratory.love/api/v1
  • URL: https://www.laboratory.love/api/v1/results
  • Auth: none required

Query parameters

qstring

Words to match in product name, brand, category, or tags (case- and punctuation-insensitive; every word must match). Example: "Coca-Cola Zero".

brandstring

Brand words. PlasticList records have no brand field, so this matches their product name.

source'commissioned' | 'plasticlist_derived'

commissioned = Laboratory.love-commissioned only; plasticlist_derived = PlasticList-derived only.

category'beverages' | 'water' | 'fast-food-and-restaurants' | 'prepared-meals' | 'baby-food-and-formula' | 'produce-and-meat' | 'milk-and-dairy' | 'supplements-and-protein' | 'pantry' | 'personal-care-and-non-food'

Browsing category slug.

tagstring

PlasticList source tag, e.g. sodas, baby_food, fast_food.

analytestring

Abbreviation or full name from listAnalytes (e.g. DEHP, BPA). Keeps only results where that analyte was measured.

detectedboolean

With analyte: true = detected in at least one sample; false = measured but never detected. Without analyte: applies to any analyte.

limitinteger

Results per page, 1–50.

cursorstring

Opaque pagination.next_cursor from the previous page. Only valid with the same filters and sort; repeat the request without it if you get invalid_cursor.

sort'relevance' | 'tested_on_desc' | 'tested_on_asc' | 'name_asc'

relevance (requires q), tested_on_desc, tested_on_asc, or name_asc.

Response

Matching results.

dataset_versionstring required

Published dataset version searched.

caveatstring required

Interpretation caveat to carry into answers.

Changes

No recorded changes to this operation across all 1 revision of this API.