> For the complete documentation index, see [llms.txt](https://wiki.crosswatch.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.crosswatch.app/crosswatch/settings/synchronization/trackers/scrob.md).

# Scrob

Scrob can synchronize with CrossWatch as a source or target. It supports one-way and two-way pairs.

{% hint style="warning" %}
**Scrob support is experimental.** The adapter is new and may change as it is tested and improved.
{% endhint %}

### Supported features

| Feature   | Supported media                  | Read | Write |
| --------- | -------------------------------- | ---- | ----- |
| Watchlist | Movies, shows                    | Yes  | Yes   |
| Ratings   | Movies, shows, seasons, episodes | Yes  | Yes   |
| History   | Movies, episodes                 | Yes  | Yes   |
| Progress  | Movies, episodes                 | Yes  | Yes   |

Scrob does not support playlist synchronization.

### Using Scrob in a pair

First, connect Scrob under **Settings** → **Connections** → **Trackers** → **Scrob**.

You can then select Scrob when creating or editing a synchronization pair.

Examples:

`Trakt → Scrob`

`Scrob → Trakt`

`Trakt ↔ Scrob`

CrossWatch only shows features supported by both providers.

Start a new pair with **one-way synchronization** and one feature. Enable more features or two-way synchronization after confirming the results.

Only enable **Remove** when source deletions should affect Scrob.

### Watchlist

Scrob Watchlist synchronization supports:

`Movies`

`Shows`

CrossWatch maps the Scrob watchlist to a personal list named `Watchlist`.

If CrossWatch needs to write to a missing list, it creates a private list. Items can be added or removed in either direction.

Seasons and episodes are not supported as Watchlist items.

### Ratings

Scrob Ratings synchronization supports:

`Movies`

`Shows`

`Seasons`

`Episodes`

Scrob uses ratings from **1 to 10**. CrossWatch rounds incoming ratings to the nearest supported whole number.

CrossWatch can create, update, and remove ratings. Episode ratings require the episode to already exist in Scrob.

### History

Scrob History synchronization supports:

`Movies`

`Episodes`

Scrob stores individual play events rather than one watched state. CrossWatch preserves timestamps, multiple plays, and rewatches where the other provider supports them.

CrossWatch can add and remove individual history entries when removal is enabled for the pair.

Shows and seasons are not written as standalone History entries.

### Progress

Scrob supports Playback Progress synchronization for:

`Movies`

`Episodes`

Progress is a native CrossWatch sync feature. It is separate from Watcher and real-time scrobbling.

CrossWatch can read, add, update, and remove stored progress. Scrob exposes this data through its Continue Watching state.

For example, `Trakt → Scrob` with **Progress** enabled synchronizes supported playback positions to Scrob.

#### Progress range

Scrob keeps active Continue Watching positions above `5%` and below `90%`.

CrossWatch only writes progress inside this range. It also requires a known playback duration.

Progress at or below `5%`, or at or above `90%`, is not stored as an active position.

### Matching and IDs

CrossWatch primarily uses TMDb identifiers when synchronizing with Scrob.

Movies and shows normally require a TMDb ID. Episode operations also require the show TMDb ID, season number, and episode number.

TVDb information can support some episode operations when available. Good metadata matching is important when the other provider uses different identifiers.

### Deletes

Scrob detects and applies removals for Watchlist, Ratings, History, and Progress.

CrossWatch safety controls still apply. CrossWatch only removes data when the feature and pair configuration allow it.

For a new Scrob pair, leave removals disabled until after a clean synchronization run.

### Power users

#### Adapter

The Scrob synchronization provider is implemented in:

`providers/sync/_mod_SCROB.py`

Feature implementations are located in:

`providers/sync/scrob/_watchlist.py`

`providers/sync/scrob/_ratings.py`

`providers/sync/scrob/_history.py`

`providers/sync/scrob/_progress.py`

The sync adapter is version `0.1` and remains experimental.

#### Provider capabilities

```
bidirectional: true
provides_ids: true
index_semantics: present
can_source: true
can_target: true

watchlist: true
ratings: true
history: true
progress: true
playlists: false
```

#### Watchlist semantics

Scrob supports Watchlist reads, additions, removals, and observed deletes for movies and shows.

TMDb is required. The default list name is `Watchlist`.

Set the Scrob provider option `watchlist_name` to use a different list. CrossWatch creates the configured list when its first write requires it.

#### Ratings semantics

Scrob supports reads, additions, updates, removals, and observed deletes for movies, shows, seasons, and episodes.

The rating scale has a minimum of `1`, maximum of `10`, and step of `1`. TMDb is the primary identifier.

Episode ratings require Scrob to already know the episode.

#### History semantics

Scrob History uses event semantics. Separate plays remain separate events instead of collapsing into one watched state.

```
event_history: true
rewatches_read: true
rewatches_write: true
```

CrossWatch preserves individual timestamps when available. Movies use TMDb as the primary identifier.

Episodes use a series TMDb ID, season number, and episode number. A TVDb series ID can also be included.

#### Progress semantics

Scrob supports reads, additions, updates, removals, and observed deletes for movie and episode progress.

Writes require a supported media identifier, playback percentage, and playback duration.

```
minimum: greater than 5%
maximum: less than 90%
```

CrossWatch converts Scrob Continue Watching data into the common Progress model. Movie progress can use TMDb or IMDb data.

Episode progress uses show identifiers with season and episode numbers.

#### Progress removal

CrossWatch stores the Scrob media identifier with each indexed Continue Watching entry.

It uses that identifier to remove the corresponding entry later.

#### Observed deletes

Scrob supports observed deletes for Watchlist, Ratings, History, and Progress.

Normal deletion safeguards still apply. The pair feature must allow removal before CrossWatch writes a deletion to Scrob.

#### Index behavior

The Scrob adapter uses `index_semantics: present`.

CrossWatch reads each enabled feature into the provider index. It then compares both sides and plans additions, updates, or removals.

#### Health check

The adapter checks the Scrob Now Playing API.

A successful response marks Scrob as available for synchronization.

#### API and authentication

Synchronization uses the Scrob connection configured under **Settings** → **Connections** → **Trackers** → **Scrob**.

The adapter uses the stored Scrob API key and authenticated account session. Pairs do not need additional credentials.

### Summary

Scrob is a bidirectional CrossWatch synchronization provider for Watchlist, Ratings, History, and Progress.

It can operate on either side of a standard synchronization pair. Progress is a native sync feature and does not depend on Watcher or real-time scrobbling.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://wiki.crosswatch.app/crosswatch/settings/synchronization/trackers/scrob.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
