🛰️ A powerful, real-time anime news API that aggregates fresh articles from 7+ reliable sources with intelligent caching and advanced date parsing.
- 🆕 2 New Sources: Added Anime Herald and Comic Book
- 🔧 Fixed Date Parsing: Properly handles all date formats including relative times ("2 hours ago")
- 🚀 Better Performance: Improved concurrent fetching with retry logic
- 📡 RSS Fallback: All sources now have RSS fallback when web scraping fails
- 🏥 Health Check: New
/api/healthendpoint for monitoring - 📊 Statistics: New
/api/statsendpoint for cache metrics - 🔄 Force Refresh: New
refresh=trueparameter to bypass cache
- ⚡ Real-time Scraping from 7+ sources
- 🔁 Smart Caching with auto-refresh (10 minutes)
- 🏷️ Tag Filtering across all sources
- 📄 Full Article Content by slug
- 📡 RSS Fallback for reliability
- 🚀 Concurrent Fetching with retry logic
- 📅 Advanced Date Parsing (handles "X hours ago", "Yesterday", etc.)
- 🏥 Health Monitoring endpoint
- 📊 Cache Statistics endpoint
| Source | Description | Type | Status |
|---|---|---|---|
| Anime News Network | Industry-leading anime news | Official | ✅ Active |
| Anime Corner | Community-driven anime news | Community | ✅ Active |
| MyAnimeList | Popular anime database news | Official | ✅ Active |
| Otaku USA Magazine | Anime culture magazine | Community | ✅ Active |
| Crunchyroll | Official streaming news | Official | ✅ Active |
| Anime Herald | Anime news and reviews | Community | 🆕 New |
| Comic Book | Anime and manga coverage | Community | 🆕 New |
Returns the latest anime news articles from all sources.
| Param | Type | Default | Description |
|---|---|---|---|
limit |
Number | 20 |
Max articles (1-100) |
sort |
String | latest |
latest or oldest |
source |
String | all |
Filter by source (see below) |
refresh |
Boolean | false |
Force cache refresh |
all- All sources (default)ann- Anime News Networkanimecorner- Anime Cornermyanimelist- MyAnimeListotakuusa- Otaku USA Magazinecrunchyroll- Crunchyrollanimeherald- Anime Heraldcomicbook- Comic Book
{
"success": true,
"data": [
{
"title": "New Anime Series Announced for 2026",
"slug": "ann-new-anime-series-announced-for-2026",
"source": "Anime News Network",
"excerpt": "A new anime series has been announced...",
"date": "2026-04-13T10:30:00.000Z",
"image": "https://example.com/image.jpg",
"link": "https://www.animenewsnetwork.com/news/...",
"tags": ["news", "anime", "2026"]
}
],
"meta": {
"total": 20,
"source": "all",
"sort": "latest",
"limit": 20,
"responseTime": "245ms",
"timestamp": "2026-04-13T10:30:00.000Z",
"availableSources": ["all", "ann", "animecorner", "myanimelist", "otakuusa", "crunchyroll", "animeherald", "comicbook"]
}
}GET /api/news?limit=10&sort=latest
GET /api/news?source=ann&limit=5
GET /api/news?source=myanimelist&refresh=true
GET /api/news?limit=50&sort=oldestFilter articles by tags or get available tags.
| Param | Type | Required | Description |
|---|---|---|---|
tag |
String | No | Tag to filter by |
source |
String | No | Source filter |
GET /api/news/tags # Get all available tags
GET /api/news/tags?tag=official # Filter by 'official' tag
GET /api/news/tags?tag=news&source=ann # Filter by tag and sourceGet full article content by slug.
GET /api/news/ann-new-anime-series-announced-for-2026Health check and system status.
{
"success": true,
"status": "healthy",
"uptime": 3600,
"timestamp": "2026-04-13T10:30:00.000Z",
"cache": {
"hits": 150,
"misses": 25,
"keys": ["news_all", "news_ann"],
"ttl": 600
},
"version": "2.0.0"
}Cache statistics and performance metrics.
# Clone the repository
git clone https://github.com/Shineii86/AniNewsAPI.git
cd AniNewsAPI
# Install dependencies
npm install
# Start development server
npm run dev
# API will be available at http://localhost:3000# Optional: Set cache duration (in seconds)
CACHE_TTL=600
# Optional: Set Chrome executable path for Puppeteer
CHROME_EXECUTABLE_PATH=/usr/bin/chromium-browser- Memory Cache: Fast in-memory storage (10 minutes TTL)
- File Cache: Persistent disk storage for backup
- Auto-refresh: Cache automatically refreshes on expiry
- Force Refresh: Use
?refresh=trueto bypass cache
- Response Time: ~200-500ms (cached)
- Concurrent Sources: 7 sources fetched simultaneously
- Cache Duration: 10 minutes
- Retry Logic: 3 attempts per source with exponential backoff
- Timeout: 15 seconds per source
- Runtime: Node.js (Vercel Functions / Express)
- Scraping: Cheerio + Axios + RSS Parser
- Caching: Node-cache + File system
- Deployment: Vercel Serverless / Express Server
- Graceful fallback when sources fail
- RSS fallback for all sources
- Detailed error logging
- Structured error responses
- Timeout protection (15s per source)
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
To add a new anime news source:
- Create a new scraper in
utils/fetchNewSource.js - Follow the existing pattern for data structure
- Add the source to
api/news.jsSOURCES object - Update the README documentation
- Test thoroughly
This project is licensed under the MIT License - see the LICENSE file for details.
- API Base URL:
https://aninews.vercel.app - Documentation: GitHub Repository
- Issues: GitHub Issues
- Discussions: GitHub Discussions
For inquiries or collaborations
Copyright © 2026 Shinei Nouzen All Rights Reserved
Made With ❤️ For The Anime Community