Netkeiba Horse Racing Scraper avatar

Netkeiba Horse Racing Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Netkeiba Horse Racing Scraper

Netkeiba Horse Racing Scraper

Extract Japanese horse racing data from netkeiba.com: race results, finishing positions, horse names, jockeys, trainers, times, odds, margins. Scrape by date range or race IDs. Covers JRA and regional racecourses. For racing analytics, betting research.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

cloud9

cloud9

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Apify Actor for scraping horse racing data from netkeiba.com (Japanese horse racing).

Features

  • Race Results: Scrape detailed race results including horse names, positions, times, odds, jockeys, and trainers
  • Horse Profiles: Get comprehensive horse information including breeding, ownership, and career statistics
  • Race Calendar: List all races for a specific date
  • EUC-JP Encoding Support: Properly handles Japanese text encoding
  • Rate Limiting: Built-in delays (2-3s) between requests
  • Retry Logic: Exponential backoff for failed requests
  • Proxy Support: Uses residential proxies for reliable scraping

Input

{
"mode": "race_results",
"raceId": "202506010101",
"raceDate": "20250601",
"maxResults": 100
}

Input Fields

FieldTypeDescriptionRequired
modestringScraping mode: race_results, horse_profile, race_calendar, oddsNo (default: race_results)
raceIdstring12-digit race ID (format: YYYYMMDDVVRR)No
raceDatestringRace date in YYYYMMDD formatNo
horseIdstringHorse ID for profile scrapingNo
searchUrlstringDirect URL to scrapeNo
maxResultsnumberMaximum number of results to returnNo (default: 100)

Modes

1. Race Results (race_results)

Scrape race results by:

  • Single race: Provide raceId
  • All races on a date: Provide raceDate
  • Custom URL: Provide searchUrl

Output Example:

{
"raceName": "第12レース",
"raceDate": "20250601",
"raceNumber": "12R",
"venue": "東京",
"surface": "芝",
"distance": "1600m",
"weather": "晴",
"trackCondition": "良",
"horseName": "ディープインパクト",
"horseId": "2022104001",
"position": "1",
"frameNumber": "5",
"horseNumber": "8",
"jockey": "武豊",
"trainer": "藤沢和雄",
"weight": "56.0",
"time": "1:34.5",
"margin": "1.1/4",
"odds": "2.3",
"popularity": "1",
"lastThreeFurlongs": "34.8",
"url": "https://race.netkeiba.com/race/result.html?race_id=202506010101"
}

2. Horse Profile (horse_profile)

Get detailed horse information.

Input:

{
"mode": "horse_profile",
"horseId": "2022104001"
}

Output Example:

{
"horseId": "2022104001",
"horseName": "ディープインパクト",
"birthYear": "2002年3月25日",
"trainer": "藤沢和雄",
"owner": "金子真人ホールディングス株式会社",
"breeder": "ノーザンファーム",
"totalRaces": "14戦",
"totalWins": "12勝",
"totalEarnings": "1,454,551,000円",
"url": "https://db.netkeiba.com/horse/2022104001/"
}

3. Race Calendar (race_calendar)

List all race IDs for a specific date.

Input:

{
"mode": "race_calendar",
"raceDate": "20250601"
}

Output Example:

{
"raceId": "202506010101",
"raceDate": "20250601",
"url": "https://race.netkeiba.com/top/race_list.html?kaisai_date=20250601"
}

URL Formats

  • Race Result: https://race.netkeiba.com/race/result.html?race_id=202506010101
  • Race Calendar: https://race.netkeiba.com/top/race_list.html?kaisai_date=20250601
  • Horse Profile: https://db.netkeiba.com/horse/2022104001/

Race ID Format

Race IDs are 12 digits: YYYYMMDDVVRR

  • YYYY: Year (e.g., 2025)
  • MM: Month (01-12)
  • DD: Day (01-31)
  • VV: Venue code (01-10)
  • RR: Race number (01-12)

Example: 202506010101 = Tokyo, June 1, 2025, Race 1

Development

# Install dependencies
npm install
# Build TypeScript
npm run build
# Run locally
npm start
# Development mode (build + run)
npm run dev

Deployment

# Login to Apify
apify login
# Deploy to Apify platform
apify push

Rate Limiting

The scraper includes:

  • 2-3 second delays between page requests
  • Exponential backoff retry (max 3 attempts)
  • Residential proxy rotation

Technical Details

  • Encoding: Handles EUC-JP encoding (Japanese text)
  • Proxy: Uses Apify residential proxies
  • Parser: Cheerio for HTML parsing
  • HTTP Client: got-scraping with anti-bot features
  • Runtime: Node.js 20+
  • Language: TypeScript

License

MIT

Support

For issues or questions, please contact the maintainer.