A fast, lightweight Go Webtoon scraper & REST API built with Colly.
This project scrapes Webtoon directly and exposes a clean JSON API for searching series, browsing genres, retrieving details, listing episodes, extracting chapter images, and more.
To improve performance, Trending and Popular pages are cached in memory and automatically refreshed every 10 minutes, allowing most requests to be served instantly without scraping Webtoon again.
- 🕷️ Powered by Colly
- 🔍 Search Webtoons
- 🎯 Search autocomplete suggestions
- 📚 Browse categories & genres
- 📈 Trending Webtoons endpoint
- 🔥 Popular Webtoons endpoint
- 📖 Detailed series information
- 📑 Complete episode listings
- 🖼️ Chapter image extraction
- 🌐 Built-in image proxy
- 🚀 In-memory caching
- 📦 JSON-friendly responses
- Go 1.26 or later
Clone the repository:
git clone https://github.com/rorabyte/Webtoons.git
cd WebtoonsDownload dependencies:
go mod downloadcd cmd/webtoon
go build .This builds the API server executable.
cd cmd/webtoon
go run .The service listens on:
http://localhost:3000
Health check endpoint.
Example:
curl http://localhost:3000/Constructs a valid Webtoon URL from title information.
| Name | Description |
|---|---|
| title | Webtoon title |
| id | Webtoon title ID |
| genre | Genre slug |
curl "http://localhost:3000/routify?title=Example&id=123&genre=action"Returns search autocomplete suggestions from Webtoon.
| Name | Description |
|---|---|
| query | Search keyword |
curl "http://localhost:3000/immediate?query=hero"Searches Webtoon and returns matching series.
| Name | Description |
|---|---|
| query | Search keyword |
curl "http://localhost:3000/search?query=magic"Returns all available Webtoon categories.
curl "http://localhost:3000/categories"Returns Webtoons belonging to a category.
| Name | Description |
|---|---|
| id | Category slug |
| sortOrder | Optional sort order (MANA, UPDATE, LIKEIT) |
Sort Orders: MANA = By Popularity UPDATE=By Date LIKEIT=By Likes
curl "http://localhost:3000/category?id=action&sortOrder=MANA"Returns currently trending Webtoons.
- Cached in memory
- Automatically refreshed every 10 minutes
curl "http://localhost:3000/trending"Returns popular Webtoons.
- Cached in memory
- Automatically refreshed every 10 minutes
curl "http://localhost:3000/popular"Returns detailed information about a Webtoon series.
| Name | Description |
|---|---|
| url | Full Webtoon URL |
curl "http://localhost:3000/details?url=https://www.webtoons.com/en/action/example/list?title_no=123"Returns episode metadata for a Webtoon.
| Name | Description |
|---|---|
| url | Full Webtoon URL |
curl "http://localhost:3000/episodes?url=https://www.webtoons.com/en/action/example/list?title_no=123"Returns all image URLs from a chapter page.
| Name | Description |
|---|---|
| url | Full chapter URL |
curl "http://localhost:3000/chapter?url=https://www.webtoons.com/en/action/example/viewer?title_no=123&episode_no=1"Webtoon image servers require a valid Referer header before serving images.
This endpoint automatically handles the required headers and returns the image directly.
Useful for:
- Mobile applications
- Desktop applications
- Downloaders
- Image viewers
- Thumbnail generation
| Name | Description | | - | | | url | Original image URL |
curl "http://localhost:3000/proxy-image?url=https://..."Search for a series:
curl "http://localhost:3000/search?query=omniscient"Get details:
curl "http://localhost:3000/details?url=SERIES_URL"Fetch episodes:
curl "http://localhost:3000/episodes?url=SERIES_URL"Retrieve chapter images:
curl "http://localhost:3000/chapter?url=CHAPTER_URL"Trending and Popular endpoints are cached in memory and refreshed every 10 minutes.
Benefits:
- Faster response times
- Reduced scraping frequency
- Lower load on Webtoon
- Better scalability for clients
- This project uses scraping and does not rely on an official Webtoon API.
- The scraper depends on Webtoon's current HTML structure.
- If Webtoon changes its website layout, scraper updates may be required.
Use responsibly and respect Webtoon's Terms of Service.