Skip to main content

scrape-airing-anime

PyPI CI Python 3.9+

The one stop shop for currently airing anime. Ask three of the biggest anime databases what is on the air right now, get one normalised table back.

$ scrape-airing-anime --dedupe --limit 5
#  title                                       score  eps  type  season       source
-  ------------------------------------------  -----  ---  ----  -----------  ------
1  Sousou no Frieren 2                         9.12   24   TV    summer 2026  mal
2  Mushoku Tensei: Isekai Ittara Honki Dasu 3  8.42   14   TV    summer 2026  kitsu
3  One Piece                                   8.40   ?    TV    fall 1999    kitsu
...

Sources

source backed by what you get
mal Jikan, the public MyAnimeList API current season: scores, members, genres, studios, synopsis
anilist AniList GraphQL everything RELEASING (long-runners included), genres, studios
kitsu Kitsu JSON:API everything currently airing, user counts, synopsis

No API keys, no HTML scraping, no headless browsers. Scores are normalised to one 0-10 scale across all three. If one source is having a bad day (AniList once switched its entire public API off, mid-development of this very tool), you get a warning on stderr and results from the others: the pipeline never dies with the fleet.

Install

pip install scrape-airing-anime      # or: uv tool install scrape-airing-anime

Or run it without installing: uvx scrape-airing-anime / pipx run scrape-airing-anime.

No dependencies. Python 3.9+ and the standard library, that is the whole stack.

Use

scrape-airing-anime                              # table of everything, all sources
scrape-airing-anime --dedupe                     # collapse duplicates across sources
scrape-airing-anime -s mal -n 25                 # top of MAL's current season
scrape-airing-anime --min-score 8 -f csv -o top.csv
scrape-airing-anime -f json -o ~/Desktop         # airing-anime.json on the Desktop
scrape-airing-anime -f jsonl -o - | jq .title    # stdout carries only data
scrape-airing-anime -f csv -o - | duckdb -c \
  "SELECT source, count(*) FROM read_csv('/dev/stdin') GROUP BY 1"

Every diagnostic (progress, warnings, the final summary) goes to stderr, so stdout is always clean CSV/JSON/JSONL you can pipe.

Full options: --source {mal,anilist,kitsu,all}, --format {table,csv,json,jsonl}, --limit N (per source), --min-score X, --sort {score,popularity,title}, --dedupe, --timeout SECONDS, --version.

Library

from scrape_airing_anime import REGISTRY

shows = REGISTRY["kitsu"](limit=10)
for show in shows:
    print(f"{show.score or '-':>5}  {show.title}  ({show.url})")

Every source returns list[AiringAnime], a frozen dataclass with title, source, url, media_type, episodes, score, popularity, season, year, genres, studios and synopsis.

Behaviour worth knowing

  • Politeness built in: a descriptive User-Agent, retries with exponential backoff, Retry-After respected, and a pause between Jikan pages (they ask for at most 1 request/second).
  • popularity is source-local (MAL members vs AniList popularity vs Kitsu user count). Compare it within one source, not across them.
  • --dedupe keeps the first hit in source order (mal, anilist, kitsu), matching on accent-and-punctuation-insensitive titles.
  • Kitsu does not ship genres/studios on its base resource, so those two columns are empty for that source.

Test

python3 -m unittest discover tests

36 tests, all offline: every HTTP interaction is faked, so the suite runs in milliseconds and does not hammer anyone's API.

Heritage

This repo began life in 2021 as scrape-myanimelist-airing: a requests-html scraper of MAL's top-airing page and a pandas notebook. The HTML scraping is gone (that is what always breaks), the ambition grew, the name followed.

License

MIT.

Release files for scrape-airing-anime 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scrape-airing-anime 1.0.0
File Size Uploaded
scrape_airing_anime-1.0.0.tar.gz 16.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for scrape-airing-anime 1.0.0
File Interpreter ABI Platform
scrape_airing_anime-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 32.0 kB

Release files / scrape_airing_anime-1.0.0.tar.gz

Download URL scrape_airing_anime-1.0.0.tar.gz
Size 16.6 kB
Tags Source
SHA-256 checksum
How to use checksums
dae100e9775368b1ea646f7da8bce2788331858ff373aaab2af475ea1608dc1d
BLAKE2b-256 checksum
How to use checksums
5b0a9a52d99ec8f7b16378796c4496df86ee6eeac8837e00d3036b17aa19dd0b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release files / scrape_airing_anime-1.0.0-py3-none-any.whl

Download URL scrape_airing_anime-1.0.0-py3-none-any.whl
Size 15.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
df959d844d7b3c5c52f9adb6130543bf1f7b04c557180cf0f8e4d598988f9e3a
BLAKE2b-256 checksum
How to use checksums
2adaf50d66f10fb89dc38d15481f2ad0350e08eaaee9bcf78e4467dfea695037
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 7, 2026.

Transparency log

Release history Release notifications | RSS feed

1.0.1

2 release files

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page