# Boatrace Japan (Kyotei) — Race Cards, Results & Payouts (`jpmarketdata/boatrace-race-checker`) Actor

Official Japanese boat racing (kyotei) data as clean English JSON: race cards with racer/motor/boat win rates, finish order, start timing, winning technique and every payout. No LZH files, no Shift-JIS, no login — one call per race. From $0.02 — no subscription. ボートレースの出走表・結果を1コールで。

- **URL**: https://apify.com/jpmarketdata/boatrace-race-checker.md
- **Developed by:** [h ichi](https://apify.com/jpmarketdata) (community)
- **Categories:** Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 race analyzeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Boatrace Japan (Kyotei) — Race Cards, Results & Payouts

Structured, English-normalized data for **Japanese boat racing (kyotei)** — the official public-gambling sport with ~¥2.4 trillion in annual betting turnover, racing nearly 365 days a year across 24 stadiums. Data comes on demand from the official [boatrace.jp](https://www.boatrace.jp) public pages (no login, robots.txt allows crawling). One call per race returns:

- **Race card** — all 6 racers with class (A1/A2/B1/B2), branch, age/weight, false-start & late counts, average ST, national and local win rates, and **motor & boat** top-2/top-3 percentages (the stats every kyotei model is built on)
- **Result** (once the race has run) — finish order with race times, **start timing (ST)** per lane, the winning technique (**kimarite**: nige / sashi / makuri…), and **every payout** (trifecta, trio, exacta, quinella, wide) with popularity rank
- Race metadata — event title, race type, distance, stadium

### Why this exists

The official site distributes data only as **LZH-compressed, fixed-width, Shift-JIS text files** — a real barrier if you are not on Windows or not Japanese-speaking. Community JSON mirrors cover **results only, ~1 day late**. This actor is the on-demand structured view: race-day cards and same-day results, in one call, in English field names. Nothing is stored between runs.

Built for **betting-model developers, data scientists and analytics tools** working on kyotei prediction — one of the most active machine-learning hobbyist scenes in Japan.

### Pricing — from $0.02 per race, no subscription

| Event | Price | When |
|---|---|---|
| Race summary (card + result + payouts) | $0.02 | Per race analyzed |
| Individual racer entry | $0.002 | Only if you enable **Include individual entries** |

A default run (1 race) costs **$0.02**. You are never charged for a race that returns no data.

### Input

| Field | Example | Notes |
|---|---|---|
| `date` | `"20260724"` | Race day (YYYYMMDD). Past dates work |
| `stadium` | `2` | 1=Kiryu … 2=Toda … 12=Suminoe … 24=Omura (full list in the field description) |
| `races` | `[2]` | Race numbers 1-12; empty = all 12 |
| `includeResult` | `true` | Fetch result/payouts per race |
| `includeIndividualEntries` | `false` | Push each racer as a record |

### Output example (one race)

```json
{
  "type": "race_summary",
  "date": "2026-07-24",
  "stadiumCode": 2,
  "stadiumName": "Toda",
  "raceNumber": 2,
  "eventTitle": "第10回週刊大衆杯",
  "distanceM": 1800,
  "status": "finished",
  "entries": [
    {"lane": 1, "racerId": 5033, "racerClass": "B1", "name": "藤原 孝斗", "branch": "愛知", "age": 28, "weightKg": 53.7,
     "fCount": 0, "lCount": 0, "avgST": 0.18,
     "national": {"winRate": 4.35, "top2Pct": 27.16, "top3Pct": 35.8},
     "local": {"winRate": 4.47, "top2Pct": 26.67, "top3Pct": 33.33},
     "motor": {"number": 17, "top2Pct": 30.99, "top3Pct": 53.05},
     "boat": {"number": 41, "top2Pct": 33.64, "top3Pct": 45.79}}
  ],
  "result": {
    "finish": [{"place": 1, "lane": 4, "racerId": 3745, "name": "橋本 年光", "raceTime": "1'50\"9"}],
    "startTiming": [{"lane": 1, "st": ".19"}, {"lane": 4, "st": ".17", "kimarite": "まくり"}],
    "kimarite": "まくり",
    "kimariteEn": "makuri (outside sweep)",
    "payouts": [
      {"betType": "trifecta", "combination": "4-2-6", "payoutJpy": 6250, "popularity": 26},
      {"betType": "trio", "combination": "2=4=6", "payoutJpy": 1920, "popularity": 8}
    ]
  }
}
````

### Use cases

- **Prediction models** — pull cards (racer/motor/boat stats) before the race and results after, without parsing Shift-JIS fixed-width files
- **Payout research** — trifecta payout distributions per stadium/race-type in a few calls
- **Dashboards & bots** — same-day results with kimarite and ST, as JSON

### Notes & limits

- If a race has not run yet, `status` is `not_run_yet` and `result` is null — the card is still returned and charged as one race
- Disqualifications (F/L/転/落…) appear verbatim in `place` for affected boats
- Read-only and throttled (~1 request / 1.5 s). No login, no personal data beyond the public racer register, nothing stored between runs

***

### 日本語ガイド

**ボートレース公式サイトの出走表・結果・払戻を1コールで構造化JSONにして返す Actor です。**

- **概要**: レース単位で、出走表(6艇の級別・支部・F/L・平均ST・全国/当地勝率・モーター/ボート2連率3連率)と、レース確定後は着順・レースタイム・進入ST・決まり手・全払戻(人気順位付き)を英語フィールド名で返します。公式のデータ配布(LZH圧縮・Shift-JIS固定長)を扱う必要がありません。
- **使い方**: `date`(YYYYMMDD)と `stadium`(1〜24: 2=戸田、12=住之江 など)を指定してください。`races` を空にすると当日12レース全部を取得します。
- **料金**: レースサマリー1件 $0.02。個別選手レコードが必要な場合のみ `includeIndividualEntries` を ON(+$0.002/艇)。データが取れないレースには課金されません。サブスクリプション不要です。

# Actor input Schema

## `date` (type: `string`):

Race day in YYYYMMDD or YYYY-MM-DD form. Boatrace runs ~365 days a year across 24 stadiums; past dates work too.

## `stadium` (type: `integer`):

Stadium code: 1=Kiryu, 2=Toda, 3=Edogawa, 4=Heiwajima, 5=Tamagawa, 6=Hamanako, 7=Gamagori, 8=Tokoname, 9=Tsu, 10=Mikuni, 11=Biwako, 12=Suminoe, 13=Amagasaki, 14=Naruto, 15=Marugame, 16=Kojima, 17=Miyajima, 18=Tokuyama, 19=Shimonoseki, 20=Wakamatsu, 21=Ashiya, 22=Fukuoka, 23=Karatsu, 24=Omura.

## `races` (type: `array`):

Which races (1-12) to fetch. Leave empty for all 12 races of the day. Each race costs $0.02.

## `includeResult` (type: `boolean`):

Also fetch the result page per race (finish order, start timing, kimarite, payouts). For races that have not run yet the record simply reports not\_run\_yet.

## `includeIndividualEntries` (type: `boolean`):

Off by default: a run costs a flat $0.02 per race summary. Enable to also push each racer entry as its own record at +$0.002 per entry.

## Actor input object example

```json
{
  "date": "20260724",
  "stadium": 2,
  "races": [
    2
  ],
  "includeResult": true,
  "includeIndividualEntries": false
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "date": "20260724",
    "races": [
        2
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/boatrace-race-checker").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "date": "20260724",
    "races": [2],
}

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/boatrace-race-checker").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "date": "20260724",
  "races": [
    2
  ]
}' |
apify call jpmarketdata/boatrace-race-checker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=jpmarketdata/boatrace-race-checker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Boatrace Japan (Kyotei) — Race Cards, Results & Payouts",
        "description": "Official Japanese boat racing (kyotei) data as clean English JSON: race cards with racer/motor/boat win rates, finish order, start timing, winning technique and every payout. No LZH files, no Shift-JIS, no login — one call per race. From $0.02 — no subscription. ボートレースの出走表・結果を1コールで。",
        "version": "0.1",
        "x-build-id": "ELkaESdxvLcHHD2Vj"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/jpmarketdata~boatrace-race-checker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-jpmarketdata-boatrace-race-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/jpmarketdata~boatrace-race-checker/runs": {
            "post": {
                "operationId": "runs-sync-jpmarketdata-boatrace-race-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/jpmarketdata~boatrace-race-checker/run-sync": {
            "post": {
                "operationId": "run-sync-jpmarketdata-boatrace-race-checker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "date",
                    "stadium"
                ],
                "properties": {
                    "date": {
                        "title": "Race date",
                        "type": "string",
                        "description": "Race day in YYYYMMDD or YYYY-MM-DD form. Boatrace runs ~365 days a year across 24 stadiums; past dates work too."
                    },
                    "stadium": {
                        "title": "Stadium (1-24)",
                        "minimum": 1,
                        "maximum": 24,
                        "type": "integer",
                        "description": "Stadium code: 1=Kiryu, 2=Toda, 3=Edogawa, 4=Heiwajima, 5=Tamagawa, 6=Hamanako, 7=Gamagori, 8=Tokoname, 9=Tsu, 10=Mikuni, 11=Biwako, 12=Suminoe, 13=Amagasaki, 14=Naruto, 15=Marugame, 16=Kojima, 17=Miyajima, 18=Tokuyama, 19=Shimonoseki, 20=Wakamatsu, 21=Ashiya, 22=Fukuoka, 23=Karatsu, 24=Omura.",
                        "default": 2
                    },
                    "races": {
                        "title": "Race numbers",
                        "type": "array",
                        "description": "Which races (1-12) to fetch. Leave empty for all 12 races of the day. Each race costs $0.02."
                    },
                    "includeResult": {
                        "title": "Include result & payouts",
                        "type": "boolean",
                        "description": "Also fetch the result page per race (finish order, start timing, kimarite, payouts). For races that have not run yet the record simply reports not_run_yet.",
                        "default": true
                    },
                    "includeIndividualEntries": {
                        "title": "Include individual entries",
                        "type": "boolean",
                        "description": "Off by default: a run costs a flat $0.02 per race summary. Enable to also push each racer entry as its own record at +$0.002 per entry.",
                        "default": false
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
