/install kaggle-api
Kaggle
Access Kaggle datasets, models, competitions, and notebooks via managed API authentication.
Quick Start
python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({}).encode()
req = urllib.request.Request('https://gateway.maton.ai/kaggle/v1/datasets.DatasetApiService/ListDatasets', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Base URL
https://gateway.maton.ai/kaggle/{native-api-path}
The gateway proxies requests to api.kaggle.com and automatically injects your credentials.
Authentication
All requests require the Maton API key:
Authorization: Bearer $MATON_API_KEY
Environment Variable: Set your API key as MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
Getting Your API Key
- Sign in or create an account at maton.ai
- Go to maton.ai/settings
- Copy your API key
Connection Management
Manage your Kaggle connections at https://ctrl.maton.ai.
List Connections
python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=kaggle&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Create Connection
python \x3C\x3C'EOF'
import urllib.request, os, json
data = json.dumps({'app': 'kaggle'}).encode()
req = urllib.request.Request('https://ctrl.maton.ai/connections', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
Open the returned url in a browser to complete authentication. Kaggle uses API key authentication - you'll need to provide your Kaggle username and API key from kaggle.com/settings.
Delete Connection
python \x3C\x3C'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
API Reference
Kaggle uses an RPC-style API. All requests are POST with JSON body.
POST /kaggle/v1/{ServiceName}/{MethodName}
Content-Type: application/json
Datasets
List Datasets
POST /kaggle/v1/datasets.DatasetApiService/ListDatasets
Content-Type: application/json
{}
Request Body Parameters:
search- Search term (optional)user- Filter by username (optional)pageSize- Results per page (optional)pageToken- Pagination token (optional)
Example with search:
{
"search": "covid"
}
Response:
{
"datasets": [
{
"id": 9481458,
"ref": "amar5693/screen-time-sleep-and-stress-analysis-dataset",
"title": "Screen Time, Sleep & Stress Analysis Dataset",
"subtitle": "ML-ready dataset analyzing smartphone usage and productivity.",
"totalBytes": 787136,
"downloadCount": 11659,
"voteCount": 236,
"usabilityRating": 1,
"licenseName": "CC0: Public Domain",
"ownerName": "Amar Tiwari",
"tags": [...]
}
]
}
Get Dataset
POST /kaggle/v1/datasets.DatasetApiService/GetDataset
Content-Type: application/json
{
"ownerSlug": "amar5693",
"datasetSlug": "screen-time-sleep-and-stress-analysis-dataset"
}
Response:
{
"id": 9481458,
"title": "Screen Time, Sleep & Stress Analysis Dataset",
"subtitle": "ML-ready dataset analyzing smartphone usage and productivity.",
"totalBytes": 787136,
"downloadCount": 11659,
"usabilityRating": 1
}
List Dataset Files
POST /kaggle/v1/datasets.DatasetApiService/ListDatasetFiles
Content-Type: application/json
{
"ownerSlug": "amar5693",
"datasetSlug": "screen-time-sleep-and-stress-analysis-dataset"
}
Response:
{
"datasetFiles": [
{
"name": "Smartphone_Usage_Productivity_Dataset_50000.csv",
"creationDate": "2026-02-13T06:56:19.803Z",
"totalBytes": 2958561
}
]
}
Get Dataset Metadata
POST /kaggle/v1/datasets.DatasetApiService/GetDatasetMetadata
Content-Type: application/json
{
"ownerSlug": "amar5693",
"datasetSlug": "screen-time-sleep-and-stress-analysis-dataset"
}
Response:
{
"info": {
"datasetId": 9481458,
"datasetSlug": "screen-time-sleep-and-stress-analysis-dataset",
"ownerUser": "amar5693",
"title": "Screen Time, Sleep & Stress Analysis Dataset",
"description": "...",
"totalViews": 44291,
"totalVotes": 236,
"totalDownloads": 11661
}
}
Download Dataset
POST /kaggle/v1/datasets.DatasetApiService/DownloadDataset
Content-Type: application/json
{
"ownerSlug": "amar5693",
"datasetSlug": "screen-time-sleep-and-stress-analysis-dataset"
}
Returns binary data (ZIP file). Response headers:
Content-Type: application/zipContent-Length: \x3Csize in bytes>
Models
List Models
POST /kaggle/v1/models.ModelApiService/ListModels
Content-Type: application/json
{}
Request Body Parameters:
owner- Filter by owner (optional)search- Search term (optional)pageSize- Results per page (optional)
Example:
{
"owner": "google"
}
Response:
{
"models": [
{
"id": 1,
"owner": "google",
"slug": "gemma",
"title": "Gemma",
"subtitle": "Gemma is a family of lightweight, state-of-the-art models",
"instanceCount": 16,
"framework": "transformers"
}
]
}
Get Model
POST /kaggle/v1/models.ModelApiService/GetModel
Content-Type: application/json
{
"ownerSlug": "google",
"modelSlug": "gemma"
}
Response:
{
"id": 1,
"title": "Gemma",
"slug": "gemma",
"owner": "google",
"subtitle": "Gemma is a family of lightweight, state-of-the-art models",
"publishTime": "2024-02-21T16:00:00Z",
"instanceCount": 16
}
Competitions
List Competitions
POST /kaggle/v1/competitions.CompetitionApiService/ListCompetitions
Content-Type: application/json
{}
Request Body Parameters:
search- Search term (optional)category- Filter by category (optional)pageSize- Results per page (optional)
Example:
{
"search": "nlp"
}
Response:
{
"competitions": [
{
"id": 118448,
"ref": "https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3",
"title": "AI Mathematical Olympiad - Progress Prize 3",
"url": "https://www.kaggle.com/competitions/ai-mathematical-olympiad-progress-prize-3",
"deadline": "2026-06-06T23:59:00Z",
"category": "Featured",
"reward": "$1,048,576",
"teamCount": 1234,
"userHasEntered": false
}
]
}
Kernels (Notebooks)
List Kernels
POST /kaggle/v1/kernels.KernelsApiService/ListKernels
Content-Type: application/json
{}
Request Body Parameters:
search- Search term (optional)user- Filter by username (optional)language- Filter by language:python,r, etc. (optional)pageSize- Results per page (optional)
Example:
{
"search": "titanic"
}
Response:
{
"kernels": [
{
"id": 5660537,
"ref": "alexisbcook/titanic-tutorial",
"title": "Titanic Tutorial",
"author": "alexisbcook",
"language": "Python",
"totalVotes": 1234,
"totalViews": 56789
}
]
}
Get Kernel
POST /kaggle/v1/kernels.KernelsApiService/GetKernel
Content-Type: application/json
{
"userName": "alexisbcook",
"kernelSlug": "titanic-tutorial"
}
Response:
{
"metadata": {
"id": 5660537,
"ref": "alexisbcook/titanic-tutorial",
"title": "Titanic Tutorial",
"author": "alexisbcook",
"language": "Python"
}
}
Code Examples
JavaScript
const response = await fetch(
'https://gateway.maton.ai/kaggle/v1/datasets.DatasetApiService/ListDatasets',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${process.env.MATON_API_KEY}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ search: 'covid' })
}
);
const data = await response.json();
console.log(data);
Python
import os
import requests
response = requests.post(
'https://gateway.maton.ai/kaggle/v1/datasets.DatasetApiService/ListDatasets',
headers={
'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}',
'Content-Type': 'application/json'
},
json={'search': 'covid'}
)
print(response.json())
Notes
- All API calls use POST method with JSON body
- API follows RPC pattern:
/v1/{ServiceName}/{MethodName} - Dataset refs use format:
{owner}/{dataset-slug} - Model refs use format:
{owner}/{model-slug} - Kernel refs use format:
{user}/{kernel-slug} - Download endpoints return binary data (ZIP files)
- Some operations require specific permissions (competition participation, kernel access)
Error Handling
| Status | Meaning |
|---|---|
| 200 | Success |
| 400 | Invalid request parameters |
| 401 | Invalid or missing authentication |
| 403 | Permission denied |
| 404 | Resource not found |
| 429 | Rate limited |
Resources
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install kaggle-api - 安装完成后,直接呼叫该 Skill 的名称或使用
/kaggle-api触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Kaggle 是什么?
Kaggle API integration with managed authentication. Access datasets, models, competitions, and kernels. Use this skill when users want to search, download, o... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 273 次。
如何安装 Kaggle?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install kaggle-api」即可一键安装,无需额外配置。
Kaggle 是免费的吗?
是的,Kaggle 完全免费(开源免费),可自由下载、安装和使用。
Kaggle 支持哪些平台?
Kaggle 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Kaggle?
由 byungkyu(@byungkyu)开发并维护,当前版本 v1.0.0。