# Changelog of MyAnimeList Scraper — Anime & Manga Data, Ratings API (`logiover/mal-anime-scraper`) Actor

- **URL**: https://apify.com/logiover/mal-anime-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/logiover/mal-anime-scraper.md

## Changelog

### 2026-09-23

- Fleet-wide quality audit. Verified end to end against live data and re-checked the input schema, the output columns and the run configuration.
- Run reliability reviewed: 100.0% of public runs succeeded in the last 30 days.
- Input schema, output schema and pricing configuration reviewed.

### 2026-09-01

- Fleet-wide health check. Verified against this Actor's real run history: 30-day success rate, output row counts, per-field fill rates, and peak memory against the configured memory limit.
- Reviewed for the failure patterns that have cost this fleet runs — unguarded proxy setup, retry loops that can outlast the run's own time budget, and full-page HTML parsing that can exhaust a small container.
- No change to input, output fields or scraping logic.

### 2026-08-11

- Maintenance release: refreshed the build and dependencies.
- Re-verified live execution, non-empty structured output and dataset field/type integrity.
- Reviewed reliability (retries, pagination) and output quality as part of a full-fleet QA pass.

### 2026-08-01

- Completed the August 2026 full health check: verified empty/programmatic default, Console UI default, and two source-informed alternative inputs on Apify.
- Confirmed successful live execution, non-empty structured output, dataset-field/type integrity, and logical sample quality within the 5-minute quality window.
- Declared 32 dataset fields from typed live cloud samples so the output contract is no longer an empty placeholder.
- Added a direct public-MyAnimeList ID-discovery fallback for anime search and seasonal modes when Jikan's list endpoints exhaust upstream 5xx retries; canonical IDs are enriched through Jikan's working per-title endpoint to preserve the full output contract.
- Closed successful-empty false positives: a first-page upstream outage or an all-ID failure now fails explicitly, while trustworthy partial results remain usable; invalid ID-mode inputs also fail clearly.
- Aligned request pacing with Jikan's documented 60-requests-per-minute limit instead of relying only on the looser three-requests-per-second ceiling.
- Declared 32 nullable dataset fields from typed live cloud samples so the output contract is no longer an empty placeholder or brittle to sparse modes.
- Completed the typed dataset union for manga, characters and recommendations modes with chapters, volumes, author/serialization arrays, character name/role/voice-actor objects, and recommendation IDs/votes.

### 2026-07-18

- Hardened against MyAnimeList/Jikan upstream outages — the search and seasonal modes no longer crash the run when the free Jikan API returns a temporary 504; they now retry with backoff and exit gracefully with whatever was collected, and log a clear upstream-outage notice. The top/details modes are unaffected.
- No change to output fields.

### 2026-07-12

- **Runs with empty input** — no field is required anymore. An empty run returns the top anime chart (highest-rated / most popular), bounded by `maxResults`. Default mode is `topAnime`.
- **Dropdown inputs** — Genres, Status, Order by and Type are now pick-lists (select menus) with human-readable labels instead of free-text, so you can't mistype a value. Genres use the correct MyAnimeList genre IDs behind friendly names. Chart filter, Season and Sort direction were already dropdowns.
- **Graceful long runs** — the paginated modes (top charts, search, seasonal) now stop after a ~4-minute time budget, push everything collected, and exit successfully instead of risking a timeout.
- Output field keys unchanged; numeric fields (score, rank, members, episodes, year, etc.) remain real numbers.

### 2026-07-01

- Initial release. MyAnimeList Scraper v1.0 with eight modes: top anime, top manga, search anime, search manga, seasonal anime, anime details, characters & voice actors, and recommendations.
- Powered by the free, open Jikan API (unofficial MyAnimeList API) — no API key, no login, no headless browser.
- Paginated top charts and search with genre/type/status/order filters, plus rate-limit-aware requests (400ms spacing + backoff on HTTP 429).
- Flattened, CSV/Excel-friendly output with five dataset views (Overview, Anime, Manga, Characters, Recommendations) and a `_mode` tag on every row.
