mirror of
https://github.com/Dvorinka/ZoneramaScraper.git
synced 2026-06-03 20:12:56 +00:00
4.1 KiB
4.1 KiB
ZoneramaScraper API
This service scrapes album and photo metadata from public Zonerama pages.
- Base URL:
http://localhost:8080 - CORS:
Access-Control-Allow-Origin: * - Default rendering: JavaScript rendering is ON by default (uses a local Chrome). You can disable it per request.
- Debugging: When
debug=true, fetched HTML is saved underdebuging/and served fromGET /debuging/.
Endpoints
- GET
/zonerama - GET
/zonerama-album
Both endpoints return JSON.
GET /zonerama
Scrape albums and their photos starting from a Zonerama profile or page link. The router auto-detects if the provided link is a profile (account) or a single album and proceeds accordingly.
Query parameters:
link(required): A Zonerama URL.- Examples:
https://eu.zonerama.com/<Account>/<TabId>or a profile URL.
- Examples:
album_limit(optional, int): Maximum number of albums to process from a profile. Default:5.0= no limit.photo_limit(optional, int): Maximum photos to collect per album. Default:10.0= no limit.rendered(optional, bool): Enable/disable JS rendering. Default:true.- Aliases to disable rendering:
no-render=trueorno_render=true.
- Aliases to disable rendering:
concurrency(optional, int): Max concurrent album fetches when rendering. Default:8(capped byalbum_limit).debug(optional, bool): Iftrue, saves fetched HTML intodebuging/and serves viaGET /debuging/.
Example:
GET /zonerama?link=https://eu.zonerama.com/SomeAccount/1419417&album_limit=3&photo_limit=25
Response shape:
{
"input_link": "https://eu.zonerama.com/SomeAccount/1419417",
"albums": [
{
"id": "13903610",
"title": "Trip",
"url": "https://eu.zonerama.com/SomeAccount/Album/13903610",
"date": "20. 9. 2025",
"photos_count": 42,
"views_count": 1234,
"photos": [
{ "id": "1234567", "page_url": "/Photo/13903610/1234567", "image_1500": "https://eu.zonerama.com/photos/1234567_1500x1000.jpg" }
]
}
]
}
Notes:
- Albums are sorted descending by date when dates can be parsed; otherwise by title.
- Photo URLs are normalized to
https://{host}/photos/{photoID}_1500x1000.jpg.
GET /zonerama-album
Scrape a single album by URL (the link must contain /Album/).
Query parameters:
link(required): A Zonerama album URL.- Example:
https://eu.zonerama.com/<Account>/Album/<AlbumId>
- Example:
photo_limit(optional, int): Maximum photos to collect from the album. Default:10.0= no limit.rendered(optional, bool): Enable/disable JS rendering. Default:true.- Aliases to disable:
no-render=trueorno_render=true.
- Aliases to disable:
debug(optional, bool): Iftrue, saves fetched HTML intodebuging/and serves viaGET /debuging/.
Example:
GET /zonerama-album?link=https://eu.zonerama.com/SomeAccount/Album/13903610&photo_limit=25
Response shape:
{
"input_link": "https://eu.zonerama.com/SomeAccount/Album/13903610",
"albums": [
{
"id": "13903610",
"title": "Trip",
"url": "https://eu.zonerama.com/SomeAccount/Album/13903610",
"date": "20. 9. 2025",
"photos_count": 42,
"views_count": 1234,
"photos": [
{ "id": "1234567", "page_url": "/Photo/13903610/1234567", "image_1500": "https://eu.zonerama.com/photos/1234567_1500x1000.jpg" }
]
}
]
}
Data models
Album:
{
"id": "string",
"title": "string",
"url": "string",
"date": "string (optional)",
"photos_count": "int (optional)",
"views_count": "int (optional)",
"photos": [Photo]
}
Photo:
{
"id": "string",
"page_url": "string (optional)",
"image_1500": "string"
}
Root response:
{
"input_link": "string",
"albums": [Album]
}
Accounts vs Albums
- An "account" (profile) page lists albums. Use
/zoneramawith a profile URL to fetch albums for that account. - An "album" page shows photos. Use
/zonerama-albumor/zoneramawith an album URL.
Operational notes
- Requires Go 1.22+.
- JS rendering requires a local Chrome installation available to the geziyor renderer.
- Debug files are written to the
debuging/directory.