# crates.io Scraper - Rust Package Metadata (`benthepythondev/crates-io-scraper`) Actor

Scrape crates.io Rust package metadata with crate name, description, downloads, version, license, repository and documentation URL.

- **URL**: https://apify.com/benthepythondev/crates-io-scraper.md
- **Developed by:** [ben](https://apify.com/benthepythondev) (community)
- **Categories:** Developer tools, Business, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## crates.io Scraper - Rust Package Metadata

Scrape crates.io Rust package metadata with crate name, description, downloads, version, license, repository and documentation URL. Export the data to JSON, CSV, Excel, webhooks, Make, Zapier, n8n, Google Sheets or your own API.

Package registries are useful demand signals. Developers use them to choose libraries, security teams use them to watch dependency ecosystems, investors and analysts use them to track technology adoption, and developer-tool companies use them to find projects that match their integration or migration targets. This actor turns crates.io search results into a clean Apify dataset that is easy to schedule, enrich and join with other sources.

### What does this actor do?

The actor queries crates.io's public search endpoint and normalizes package metadata into flat rows. You provide a query such as `tokio`, set the maximum number of results, and the actor returns package names, descriptions and source-specific popularity or version fields. The implementation is intentionally lightweight: direct HTTP requests, no browser, no proxy, no account and no API key.

### Input

```json
{
  "query": "tokio",
  "maxResults": 25
}
````

Use specific framework, language, company, tool or technology names for targeted research. Broad terms return popular ecosystem packages; narrow terms are better for lead generation and competitor tracking.

### Output

Each item includes a stable package identifier, package name, description, source name, the original query and source-specific fields such as downloads, versions, repository URL, homepage URL, license, documentation URL or tags when the registry provides them.

```json
{
  "package_id": "example/package",
  "name": "example/package",
  "description": "Example package description",
  "source": "crates.io",
  "search": "tokio"
}
```

### Use cases

Developer-relations teams can identify packages in an ecosystem and build outreach lists. Security teams can monitor packages by keyword and spot high-download dependencies. SaaS companies can find open-source projects that might need an integration, migration tool, hosting service or support product. Market researchers can track which frameworks, libraries and tool categories are growing across public package registries.

### Scheduling

Run the actor weekly for the same query and append results to a dataset. Over time, downloads, versions and repository metadata create a useful time series for ecosystem research. You can also trigger webhooks when a search returns a new package matching your target keyword.

### Reliability

This actor uses public registry endpoints and small default inputs so daily auto-tests remain fast. It retries transient request errors and pushes one dataset item per package result. Because it does not use browser automation or residential proxies, it is inexpensive to run and suitable for scheduled tasks.

### Pricing

This actor uses pay-per-result pricing. You pay for each package row written to the dataset, plus a small actor start event.

### FAQ

#### Does it need an API key?

No. It uses public package registry endpoints.

#### Can I search any keyword?

Yes. Use package names, framework names, vendors, technologies or broad category terms.

#### Can this monitor new packages?

Yes. Schedule the same query and compare outputs over time.

#### Is it useful for lead generation?

Yes. Package metadata can identify projects, maintainers, repositories and ecosystems relevant to developer-tool sales and partnerships.

### You might also like

- [PyPI Scraper](https://apify.com/benthepythondev/pypi-scraper)
- [Docker Hub Scraper](https://apify.com/benthepythondev/dockerhub-scraper)
- [GitHub Repository Intelligence](https://apify.com/benthepythondev/github-repository-intelligence)

### Keywords

crates.io scraper, package metadata API, open source intelligence, developer tools data, package registry scraper, dependency research, software ecosystem data, Apify package scraper.

### Data quality notes

The actor keeps the output intentionally flat so it can be joined with CRM records, enrichment tools, spreadsheets and BI systems without additional parsing. Identifiers are stable where the source registry provides them, and source-specific fields are preserved instead of being hidden behind a generic schema. This makes the dataset useful for both quick exports and repeatable monitoring workflows.

For lead-generation use, combine the package name and repository/homepage fields with a contact enrichment actor such as Website Contact Extractor. For market research, schedule the same query over time and compare downloads, version counts, favorites or timestamps. For developer-relations work, use keyword searches around frameworks, cloud providers, databases, AI tooling, testing libraries or migration targets to find projects that match your product category.

### Tips for better searches

Use broad ecosystem terms when you want market maps, for example `api`, `database`, `testing`, `ai`, `payments`, `kubernetes` or `analytics`. Use exact package or framework terms when you want competitor monitoring. Run several narrow queries instead of one huge query when you need better coverage across a category.

### Automation ideas

You can run this actor from Apify schedules, the API, a saved task, or an integration. Common workflows include weekly package tracking, dependency research, open-source lead discovery, security watchlists, trend dashboards and technology adoption reports. The actor is small enough to run frequently and cheap enough to include in larger enrichment pipelines.

### Why this dataset has commercial value

Package metadata is a buying-intent signal for developer products. A project that depends on a framework, database, cloud service, testing tool or API category often has an active engineering team and an immediate technical context. That makes registry data useful beyond simple package lookup: it can feed sales research, partner discovery, ecosystem mapping, migration planning, content targeting and competitive analysis.

For best results, combine registry rows with repository metadata, website contact extraction and company enrichment. The package registry tells you what technology is being used; enrichment tells you who owns the project and how to reach them. That combined workflow is where these lightweight package actors become useful business tools instead of one-off lookup scripts.

# Actor input Schema

## `query` (type: `string`):

Package search query.

## `maxResults` (type: `integer`):

Maximum number of packages to return.

## Actor input object example

```json
{
  "query": "tokio",
  "maxResults": 10
}
```

# 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 = {
    "query": "tokio",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("benthepythondev/crates-io-scraper").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 = {
    "query": "tokio",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("benthepythondev/crates-io-scraper").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 '{
  "query": "tokio",
  "maxResults": 10
}' |
apify call benthepythondev/crates-io-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=benthepythondev/crates-io-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "crates.io Scraper - Rust Package Metadata",
        "description": "Scrape crates.io Rust package metadata with crate name, description, downloads, version, license, repository and documentation URL.",
        "version": "1.0",
        "x-build-id": "BR1nhDi09pg3zmr5F"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/benthepythondev~crates-io-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-benthepythondev-crates-io-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/benthepythondev~crates-io-scraper/runs": {
            "post": {
                "operationId": "runs-sync-benthepythondev-crates-io-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/benthepythondev~crates-io-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-benthepythondev-crates-io-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",
                "properties": {
                    "query": {
                        "title": "Search query",
                        "type": "string",
                        "description": "Package search query.",
                        "default": "tokio"
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum number of packages to return.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
