Basketball Reference Table Scraper
Pricing
from $16.00 / 1,000 basketball statistics rows
Basketball Reference Table Scraper
Extract normalized stats rows from public Basketball Reference player, team, league, and box-score tables.
Basketball Reference Table Scraper
Pricing
from $16.00 / 1,000 basketball statistics rows
Extract normalized stats rows from public Basketball Reference player, team, league, and box-score tables.
You can access the Basketball Reference Table Scraper programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "1.0", "x-build-id": "ecDRRmIPBzrLrGMWd" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/muhammadafzal~basketball-reference-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-muhammadafzal-basketball-reference-scraper", "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/muhammadafzal~basketball-reference-scraper/runs": { "post": { "operationId": "runs-sync-muhammadafzal-basketball-reference-scraper", "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/muhammadafzal~basketball-reference-scraper/run-sync": { "post": { "operationId": "run-sync-muhammadafzal-basketball-reference-scraper", "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": [ "startUrls" ], "properties": { "startUrls": { "title": "Basketball Reference page URLs", "minItems": 1, "maxItems": 20, "type": "array", "description": "Use this for public player, team, league, season, or box-score pages on basketball-reference.com. Enter 1–20 HTTPS URLs, for example https://www.basketball-reference.com/players/c/curryst01.html. Stathead and authenticated pages are not supported.", "default": [ { "url": "https://www.basketball-reference.com/players/c/curryst01.html" } ], "items": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "title": "URL of a web page", "format": "uri" } } } }, "tableIds": { "title": "Table IDs", "maxItems": 50, "type": "array", "description": "Use this to select exact HTML table IDs, for example per_game_stats, totals_stats, advanced, or roster. Defaults to per_game_stats. This field is ignored when Extract all tables is enabled.", "items": { "type": "string", "minLength": 1, "maxLength": 100, "pattern": "^[A-Za-z0-9_-]+$" }, "default": [ "per_game_stats" ] }, "extractAllTables": { "title": "Extract all tables", "type": "boolean", "description": "Use this when you need every stats table found on each supplied page, including tables embedded in HTML comments. Defaults to false; it does not follow links or crawl the site.", "default": false }, "includeSummaryRows": { "title": "Include summary rows", "type": "boolean", "description": "Use this to retain footer, partial-team, and total rows in addition to ordinary body rows. Defaults to false to avoid duplicate career/team aggregates.", "default": false }, "maxResults": { "title": "Maximum result rows", "minimum": 1, "maximum": 5000, "type": "integer", "description": "Use this to cap dataset rows and pay-per-event cost across all pages. Enter 1–5000; the default is 100. The Actor stops before writing rows beyond this limit.", "default": 100 }, "requestDelayMillis": { "title": "Delay between page requests (ms)", "minimum": 3200, "maximum": 15000, "type": "integer", "description": "Use this to slow requests beyond the required responsible-use floor. Enter 3200–15000 milliseconds; the default 3200 keeps traffic below Basketball Reference's published 20-request-per-minute limit.", "default": 3200 }, "requestTimeoutSeconds": { "title": "Page timeout (seconds)", "minimum": 10, "maximum": 60, "type": "integer", "description": "Use this to bound one page request. Enter 10–60 seconds; the default is 30. This is not the total Actor run timeout.", "default": 30 }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "Use this only when your direct cloud route is blocked. The default uses no proxy; if enabled, keep one stable proxy session for the run. Proxy traffic can add platform cost.", "default": { "useApifyProxy": 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 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Basketball Reference Table Scraper from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: