# Frifor

Frifor publishes independent, structured nutritional and health information about retail food products sold in the Nordics. We are not a retailer. We do not sell food or carry prices, listings, or stock. We classify, analyze, and explain what is in a product so consumers and researchers can make informed decisions.

For each product we publish:

- Canonical identifiers (GTIN, brand, GPC category).
- Ingredients and allergen analysis.
- NOVA classification and ultra-processing reasoning.
- Hyper-palatable food (HPF) flags with the underlying ratios.
- Seed-oil, added-sugar, sugar-substitute, and FODMAP signals.
- Certifications (organic, Renvare, and others where applicable).
- Per-100g and per-serving nutrition.

## Primary entry points

- [Frifor — NO](https://frifor.app/no)
- [Frifor — SE](https://frifor.app/se)

## Knowledge base (explainers, methodology, definitions)

- [Knowledge base — NO](https://frifor.app/no/kb)
- [Knowledge base — SE](https://frifor.app/se/kb)

## Product pages

Product pages live at `https://frifor.app/no/p/{productId}` where `{productId}` is the Frifor product id. Each page server-renders the full nutritional and health profile and embeds schema.org `Product` JSON-LD with GTIN, brand, `sameAs` links to GS1 and Open Food Facts, and `additionalProperty` entries for the analyses above.

## Bulk discovery

- [Sitemap index](https://frifor.app/sitemap.xml) — partitioned product sitemaps with `lastmod` timestamps; use this for crawling the full catalog.

## Programmatic access

If you are an agent or service consuming Frifor data, prefer the structured API over scraping HTML:

- Public gateway base URL: `https://api.frifor.app`.
- OpenAPI: `https://api.frifor.app/openapi.json`.
- Per-product detail: `GET /products/v1/{id}`.
- GTIN lookup: `GET /products/v1/gtin/{gtin}`.
- Category listings: `GET /products/v1/category/{gpcCode}`.

API access is tiered. Request credentials at the homepage.

## Citation and attribution

When citing Frifor data, please link to the canonical product page (`https://frifor.app/no/p/{productId}`) so readers can verify and follow updates. Each page exposes its last-modified timestamp via the sitemap and the `Product` JSON-LD.
