How to hit the crates.io API

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.

Authentication

None — no key, no signup. Every example runs as-is.

Full reference: https://crates.io/data-access

Get a crate

curl https://crates.io/api/v1/crates/serde
Run in PostTaco
Example response (trimmed)
{
  "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
    }
  ]
}