# TV 2 Norway — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Access the latest news, sports updates, and TV schedules from tv2.no, including live match information, articles by category, and video content. Browse frontpage articles, track live sports matches with detailed stats, check the TV guide, and follow topic-specific news feeds all in one place.

**Category:** News & Media | **Website:** [tv2.no/](https://tv2.no/) | **Docs:** [parse.bot/marketplace/46daea6d-8b3e-46b0-9485-1b8c187902d8/tv2-no-api](https://parse.bot/marketplace/46daea6d-8b3e-46b0-9485-1b8c187902d8/tv2-no-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-tv2-no-api-46daea6d/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_article

Fetches and parses the full content of a single TV2 article by its URL. Extracts title, ingress (lead paragraph), full body text, author names, publication/update timestamps, and embedded images with captions. Handles both absolute URLs (https://www.tv2.no/a/18778686) and path-only short forms (/a/18778686).

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `url` | string | Yes | Full URL or path-only short form of the article (e.g. https://www.tv2.no/a/18778686 or /a/18778686) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-tv2-no-api-46daea6d/get_article \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"<string>"}'
```

### get_category_articles

Retrieves articles from a named TV2 content category stream. Returns the same article-summary shape as the front page but scoped to one editorial section. Categories correspond to top-level site navigation.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `category` | string | No | Category name. Accepted values: nyheter, sport, underholdning, video, broom, baat, bolig, historie, helse. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-tv2-no-api-46daea6d/get_category_articles \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"category":"<string>"}'
```

### get_frontpage_articles

Retrieves articles from the TV2.no front page content stream. Returns a flat list of article summaries ordered by editorial position. Each item carries a title, URL, optional kicker/summary, image URL, section tag, and content type. The stream refreshes frequently; results reflect real-time editorial decisions.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-tv2-no-api-46daea6d/get_frontpage_articles \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### get_livesport_matches

Retrieves football match listings for a given date from TV2's livesport API. Results are grouped by season/competition, each containing match groups (rounds) with individual matches. Each match carries team info, scores (when available), status, start time, and broadcast details. Defaults to today's date when omitted.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date` | string | No | Date in YYYY-MM-DD format. Defaults to today's date if omitted. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-tv2-no-api-46daea6d/get_livesport_matches \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"<string>"}'
```

### get_match_details

Retrieves detailed information for a single football match by its UUID. Returns three sections: overview (result, teams, scores, competition context, broadcast info), lineups (formations, player lists with optional ratings), and facts (match incidents/events like goals, cards, substitutions). Some sections may be empty for matches that have not yet started.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `match_id` | string | Yes | Match ID in UUID format, obtainable from get_livesport_matches results |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-tv2-no-api-46daea6d/get_match_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"match_id":"<string>"}'
```

### get_siste_nytt

Retrieves the latest breaking news posts from TV2's live news feed (Siste nytt / Overblikk). Results are paginated with configurable page size. Each post includes a title, cleaned text content extracted from markup blocks, creation timestamp, direct URL, and a breaking-news flag. Ordered reverse-chronologically.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `limit` | integer | No | Number of results per page. Accepted values: 1, 5, 10, 25. |
| `page` | integer | No | Page number for pagination (1-based) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-tv2-no-api-46daea6d/get_siste_nytt \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"limit":"<integer>","page":"<integer>"}'
```

### get_subcategory_articles

Retrieves articles from a subcategory page under a parent category. Subcategories nest under nyheter (utenriks, innenriks, okonomi, forbruker, krim) or sport (fotball, sykkel, vintersport, ishockey, handball, tennis, sjakk, basketball). Returns lighter article summaries with title, URL, and optional image URL.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `subcategory` | string | Yes | Subcategory name. Accepted values: utenriks, innenriks, okonomi, forbruker, krim (under nyheter), fotball, sykkel, vintersport, ishockey, handball, tennis, sjakk, basketball (under sport). |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-tv2-no-api-46daea6d/get_subcategory_articles \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"subcategory":"<string>"}'
```

### get_topic_feed

Retrieves breaking news posts filtered by a specific topic/portal ID. Returns the raw post documents including full content blocks (markup, images), byline info, category, and timestamps. Also returns pagination metadata (totalDocs, totalPages). Useful for following a specific news topic over time.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `topic_id` | string | Yes | Topic/portal ID in MongoDB ObjectId format (24-character hex string), obtainable from get_siste_nytt post portal data |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-tv2-no-api-46daea6d/get_topic_feed \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"topic_id":"<string>"}'
```

### get_tv_guide

Retrieves the full TV schedule (EPG) for all TV2 channels on a given date. Each channel entry includes channel metadata and a chronological list of programs with titles, synopses, genres, start/end times, episode info, age ratings, and replay availability. Defaults to today's date when omitted.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `date` | string | No | Date in YYYY-MM-DD format. Defaults to today's date if omitted. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-tv2-no-api-46daea6d/get_tv_guide \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"<string>"}'
```

### get_videos

Retrieves video content from TV2's video stream. Returns the same article-summary shape as the front page but filtered to video content only. Each item carries a title, video asset URL, and thumbnail image.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-tv2-no-api-46daea6d/get_videos \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```
