---
title: Quick scripts
description: Pull your own data out of FlickList with a personal API key.
section: Guides
order: 3
---

# Quick scripts

Write a short script against your own FlickList account without building an app around it. Python examples run as plain `python3 script.py` (with the `requests` package installed); the JavaScript uses top-level `await`, so save it as `script.mjs` and run `node script.mjs`.

## 1. Create an API key

Go to Settings → Apps on flicklist.tv and create a key for yourself. A personal script only needs the `read` scope, since it's reading your own account, not changing anyone's data. See [Authentication](/dev/authentication) for how the key attaches to a request.

## 2. Call the endpoint you need

Here's a ratings export, one of the more common personal scripts. `GET /v3/sync/ratings` returns every rating on the account: movies, shows, seasons, and episodes together, each as a flat object with `title`, `year`, `media_type`, `rating`, `rated_at`, and an [ids block](/dev/ids).

:::tabs
```bash
curl -H "Authorization: Bearer $API_KEY" \
  "https://flicklist.tv/api/v3/sync/ratings"
```
```javascript
const res = await fetch('https://flicklist.tv/api/v3/sync/ratings', {
  headers: { Authorization: `Bearer ${apiKey}` },
});
const ratings = await res.json();
```
```python
import requests
r = requests.get(
    "https://flicklist.tv/api/v3/sync/ratings",
    headers={"Authorization": f"Bearer {api_key}"},
)
ratings = r.json()
```
:::

## 3. Write the result to a file

```python
import csv

with open("ratings.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["title", "year", "type", "rating", "tmdb_id"])
    for item in ratings:
        writer.writerow([
            item["title"],
            item["year"],
            item["media_type"],
            item["rating"],
            item["ids"]["tmdb"],
        ])

print(f"Wrote {len(ratings)} ratings to ratings.csv")
```

Ratings run 0.5 to 10.0 in half-point steps. Filter on `media_type` (`"movie"` or `"tv"`) if you only want one kind, and use `season_number` and `episode_number` to tell show, season, and episode ratings apart.
