cagematch-scraper
v2.0.3
Published
The Cagematch Scraper is a Node.js project designed to scrape data from the Cagematch website and convert it into JSON format.
Downloads
550
Readme
Cagematch Scraper
The Cagematch Scraper is a Node.js project designed to scrape data from the Cagematch website and convert it into JSON format.
Overview
The CagematchScraper class is responsible for scraping match data from the Cagematch website. It uses the RequestManager to fetch match data and the ScraperManager to extract match details from the HTML.
JSON Structure Examples
Singles Matches
{
"date": "01.03.2025",
"promotions": [
"World Wrestling Entertainment"
],
"eventType": "Premium Live Event",
"event": "WWE Elimination Chamber 2025 - Toronto",
"location": "Rogers Centre in Toronto, Ontario, Canada",
"matchType": "Unsanctioned",
"titles": [],
"isTitleChange": false,
"duration": "27:35",
"isDraw": false,
"isTeam": false,
"entities": [
{
"type": "wrestler",
"id": "1499",
"isMainEntity": true,
"name": "Kevin Owens"
},
{
"type": "wrestler",
"id": "1523",
"isMainEntity": true,
"name": "Sami Zayn"
}
],
"winners": [
{
"type": "wrestler",
"id": "1499",
"isMainEntity": true,
"name": "Kevin Owens"
}
],
"losers": [
{
"type": "wrestler",
"id": "1523",
"isMainEntity": true,
"name": "Sami Zayn"
}
]
}Tag Team Matches
{
"date": "01.03.2025",
"promotions": [
"All Elite Wrestling"
],
"eventType": "TV-Show",
"event": "AEW Collision #82",
"location": "Oakland Arena in Oakland, California, USA",
"matchType": "",
"titles": [],
"isTitleChange": false,
"duration": "15:23",
"isDraw": false,
"isTeam": true,
"entities": [
{
"type": "stable",
"id": "3877",
"name": "The Undisputed Kingdom",
"isMainEntity": true,
"members": [
{
"type": "wrestler",
"id": "4006",
"name": "Kyle O'Reilly"
},
{
"type": "wrestler",
"id": "31",
"name": "Roderick Strong"
}
]
},
{
"type": "wrestler",
"id": "4006",
"name": "Kyle O'Reilly"
},
{
"type": "wrestler",
"id": "31",
"name": "Roderick Strong"
},
{
"type": "team",
"id": "5470",
"name": "FTR",
"isMainEntity": true,
"members": [
{
"type": "wrestler",
"id": "7159",
"name": "Cash Wheeler"
},
{
"type": "wrestler",
"id": "12068",
"name": "Dax Harwood"
}
]
},
{
"type": "wrestler",
"id": "7159",
"name": "Cash Wheeler"
},
{
"type": "wrestler",
"id": "12068",
"name": "Dax Harwood"
}
],
"winners": [
{
"type": "stable",
"id": "3877",
"name": "The Undisputed Kingdom",
"isMainEntity": true,
"members": [
{
"type": "wrestler",
"id": "4006",
"name": "Kyle O'Reilly"
},
{
"type": "wrestler",
"id": "31",
"name": "Roderick Strong"
}
]
}
],
"losers": [
{
"type": "team",
"id": "5470",
"name": "FTR",
"isMainEntity": true,
"members": [
{
"type": "wrestler",
"id": "7159",
"name": "Cash Wheeler"
},
{
"type": "wrestler",
"id": "12068",
"name": "Dax Harwood"
}
]
}
]
}Cookies
If the Cagematch site is protected by Sucuri, you can provide session cookies to skip the Playwright-based bypass. Cookies can be supplied in two ways:
1. Environment variable
Set CAGEMATCH_SCRAPER_COOKIES in your .env file using single quotes so the inner double quotes don't need escaping:
CAGEMATCH_SCRAPER_COOKIES='[{"name": "sucuricp_tfca_...", "value": "1"}, {"name": "sucuri_cloudproxy...", "value": "..."}]'2. Constructor parameter
Pass the cookies array directly when instantiating CagematchScraper:
const scraper = new CagematchScraper({
cookies: [
{ "name": "sucuricp_tfca_...", "value": "1" },
{ "name": "sucuri_cloudproxy...", "value": "..." }
]
});If no valid cookies are provided, the scraper will fall back to Playwright to obtain them automatically.
Logging
All classes include a setIsVerbose method that enables log visualization for the requesting and scraping processes. Alternatively, you can set the NODE_DEBUG environment variable to CAGEMATCH-SCRAPER* to view all logs.
Generating Matches File for a Specific Date
To generate the matches file for a specific date, use the generateMatchesFile command:
npm run generateMatchesFile [day] [month] [year] [optional: verbose (true|false)]For example, to generate the matches file for March 15, 2023, run:
npm run generateMatchesFile 15 3 2023Once executed, it will generate a result.json file in your folder.
