crates.io's API at https://crates.io/api/v1 serves Rust crate metadata. The crawler policy asks for a User-Agent identifying you and at most one request a second.
None — no key, no signup. Every example runs as-is.
Full reference: https://crates.io/data-access
curl https://crates.io/api/v1/crates/serde
{
"crate": {
"id": "serde",
"name": "serde",
"updated_at": "2026-07-18T23:05:13.266456Z",
"versions": [
2817185,
1748414
],
"keywords": [
"serialization",
"no_std"
],
"categories": [
"no-std",
"encoding"
],
"badges": [],
"created_at": "2014-12-05T20:20:39.487502Z",
"downloads": 1429999070,
"recent_downloads": 320064849,
"default_version": "1.0.229",
"num_versions": 316,
"yanked": false,
"max_version": "1.0.229",
"newest_version": "1.0.229"
},
"versions": [
{
"id": 2817185,
"crate": "serde",
"num": "1.0.229",
"dl_path": "/api/v1/crates/serde/1.0.229/download",
"readme_path": "/api/v1/crates/serde/1.0.229/readme",
"updated_at": "2026-07-18T23:05:13.266456Z",
"created_at": "2026-07-18T23:05:13.266456Z",
"downloads": 96851868,
"features": {
"alloc": [
"serde_core/alloc"
],
"default": [
"std"
],
"derive": [
"serde_derive"
],
"rc": [
"serde_core/rc"
],
"std": [
"serde_core/std"
],
"unstable": [
"serde_core/unstable"
]
},
"yanked": false,
"yank_message": null,
"lib_links": null,
"license": "MIT OR Apache-2.0",
"links": {
"dependencies": "/api/v1/crates/serde/1.0.229/dependencies",
"version_downloads": "/api/v1/crates/serde/1.0.229/downloads",
"authors": "/api/v1/crates/serde/1.0.229/authors"
},
"crate_size": 83669
},
{
"id": 1748414,
"crate": "serde",
"num": "1.0.228",
"dl_path": "/api/v1/crates/serde/1.0.228/download",
"readme_path": "/api/v1/crates/serde/1.0.228/readme",
"updated_at": "2025-09-27T16:51:35.265429Z",
"created_at": "2025-09-27T16:51:35.265429Z",
"downloads": 477235927,
"features": {
"alloc": [
"serde_core/alloc"
],
"default": [
"std"
],
"derive": [
"serde_derive"
],
"rc": [
"serde_core/rc"
],
"std": [
"serde_core/std"
],
"unstable": [
"serde_core/unstable"
]
},
"yanked": false,
"yank_message": null,
"lib_links": null,
"license": "MIT OR Apache-2.0",
"links": {
"dependencies": "/api/v1/crates/serde/1.0.228/dependencies",
"version_downloads": "/api/v1/crates/serde/1.0.228/downloads",
"authors": "/api/v1/crates/serde/1.0.228/authors"
},
"crate_size": 83652
}
],
"keywords": [
{
"id": "serialization",
"keyword": "serialization",
"created_at": "2014-11-20T20:14:31.726180Z",
"crates_cnt": 1581
},
{
"id": "no_std",
"keyword": "no_std",
"created_at": "2015-06-20T04:34:42.753830Z",
"crates_cnt": 2415
}
],
"categories": [
{
"id": "no-std",
"category": "No standard library",
"slug": "no-std",
"description": "Crates that are able to function without the Rust standard library.",
"created_at": "2017-02-10T01:52:09.447906Z",
"crates_cnt": 13334
},
{
"id": "encoding",
"category": "Encoding",
"slug": "encoding",
"description": "Encoding and/or decoding data from one data format to another.",
"created_at": "2017-01-17T19:13:05.112025Z",
"crates_cnt": 7226
}
]
}
curl "https://crates.io/api/v1/crates?q=http%20client&per_page=2"
{
"crates": [
{
"id": "rabbitmq_http_client",
"name": "rabbitmq_http_client",
"updated_at": "2026-09-09T01:25:59.452767Z",
"versions": null,
"keywords": null,
"categories": null,
"badges": [],
"created_at": "2024-08-21T19:40:34.500654Z",
"downloads": 61827,
"recent_downloads": 4975,
"default_version": "0.92.0",
"num_versions": 84,
"yanked": false,
"max_version": "0.92.0",
"newest_version": "0.92.0"
},
{
"id": "cdk-http-client",
"name": "cdk-http-client",
"updated_at": "2026-09-18T08:45:38.860534Z",
"versions": null,
"keywords": null,
"categories": null,
"badges": [],
"created_at": "2026-02-12T16:29:24.710071Z",
"downloads": 16894,
"recent_downloads": 11807,
"default_version": "0.18.1",
"num_versions": 34,
"yanked": false,
"max_version": "0.18.1",
"newest_version": "0.18.1"
}
],
"meta": {
"total": 13440,
"next_page": "?q=http+client&per_page=2&seek=W2ZhbHNlLDIuNTIwNDgwOSwxMTgwNywyMTE2NDM5XQ",
"prev_page": null
}
}