# NuGet Scraper — .NET Package Metadata (Bulk) (`hipersoft/nuget-scraper`) Actor

Fetch NuGet .NET package metadata in bulk. Search the registry or look up exact package ids and get version, description, authors, total downloads, tags, dependencies, project/license/icon URLs and publish date. Export to JSON, CSV or Excel.

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

## Pricing

from $0.0005 / package scraped

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## NuGet Scraper — .NET Package Metadata, Versions, Downloads & Dependencies

Pull clean, structured metadata for **NuGet** packages in bulk. Search the .NET package registry or look up exact package ids and get back one tidy JSON record per package: latest version, description, authors, total downloads, verified-owner flag, tags, project / license / icon links, publish date, version count and the dependencies of the latest release. Built for .NET developers, dependency and license auditors, security teams and OSS researchers who need reliable package data at scale.

### Features

- 🔎 **Free-text search** — run any NuGet query (`json`, `logging`, `orm`) and collect the top matching packages in bulk.
- 🎯 **Exact lookups** — pass precise package ids like `Newtonsoft.Json` or `Serilog` alongside, or instead of, a search query.
- 📈 **Total downloads** — every row carries the package's cumulative download count and its verified-owner flag.
- 🧩 **Dependencies** — the runtime dependencies of the latest version, de-duplicated across target frameworks.
- 🏷️ **Full metadata** — version, description, authors, tags, project URL, license URL, icon URL and publish date.
- ⏱️ **Prerelease control** — include or exclude prerelease builds with a single toggle.
- ⚙️ **Reliable by design** — retry-with-backoff, per-package isolation and a time budget keep large runs stable and clean.

### What you get

Each package becomes one clean JSON record:

```json
{
  "id": "Newtonsoft.Json",
  "version": "13.0.4",
  "description": "Json.NET is a popular high-performance JSON framework for .NET",
  "authors": ["James Newton-King"],
  "totalDownloads": 9061112532,
  "verified": true,
  "tags": ["json"],
  "projectUrl": "https://www.newtonsoft.com/json",
  "licenseUrl": "https://www.nuget.org/packages/Newtonsoft.Json/13.0.4/license",
  "iconUrl": "https://api.nuget.org/v3-flatcontainer/newtonsoft.json/13.0.4/icon",
  "published": "2023-03-08T04:52:00.000+00:00",
  "versions": 84,
  "dependencies": [],
  "nugetUrl": "https://www.nuget.org/packages/Newtonsoft.Json"
}
```

#### Output schema

| Field | Type | Description |
|-------|------|-------------|
| `id` | string | Package id on NuGet. |
| `version` | string | Latest version (stable unless prerelease is enabled). |
| `description` | string | Short package description. |
| `authors` | array | Declared package authors. |
| `totalDownloads` | integer | Cumulative download count across all versions. |
| `verified` | boolean | Whether the package has a verified owner/prefix. |
| `tags` | array | Tag keywords declared by the package. |
| `projectUrl` | string (URL) | Project homepage link. |
| `licenseUrl` | string (URL) | License link. |
| `iconUrl` | string (URL) | Package icon link. |
| `published` | string (ISO date) | Publish timestamp of the latest version. |
| `versions` | integer | Number of published versions. |
| `dependencies` | array | Dependency package ids of the latest version. |
| `nugetUrl` | string (URL) | Package page on nuget.org. |

### Input

```json
{
  "packages": ["Newtonsoft.Json", "Serilog"],
  "search": "json",
  "maxItems": 100,
  "prerelease": false
}
```

| Field | Description |
|-------|-------------|
| `packages` | Exact NuGet package ids to look up. One row per id. |
| `search` | Free-text query against the registry (id, description, tags). |
| `maxItems` | Maximum packages to return in total across ids and search. |
| `prerelease` | Include prerelease versions when picking the latest version and search results. |

### Use cases

- Audit licenses, authors and dependency counts across a set of packages before adoption.
- Compare download totals between competing .NET libraries.
- Build a curated catalog of packages for a topic or an internal registry.
- Feed package data into security, compliance or SBOM workflows.

### Pricing

Pay-per-event: you're billed a small amount per package scraped — you only pay for what you get. See the **Pricing** tab for current rates.

### FAQ

**How many packages can I scrape per run?**
As many as you like. A single search query returns the top matching packages up to `maxItems`, and you can add any number of exact ids in `packages`. Raise `maxItems` for larger pulls.

**What's the output format?**
Structured JSON — one clean record per package with fields such as `id`, `version`, `totalDownloads`, `authors`, `tags`, `dependencies` and `published`. Export it as JSON, CSV, Excel or via the API.

**Can I get dependencies and the publish date?**
Yes. Every row includes the dependencies of the latest version and its publish timestamp, plus the total number of published versions.

**How do I include prerelease versions?**
Enable the `prerelease` toggle. The reported latest version and search results will then consider prerelease builds; otherwise only stable releases are used.

**Can I use this with n8n?**
Yes. Run the NuGet Scraper from n8n with the [Apify community node](https://n8n.io/integrations/apify/): add an Apify node, select this Actor, pass `packages` and/or `search`, and use the dataset items in the next n8n step. You can trigger a run on a schedule or from any upstream node and branch on the results.

**Can I integrate this with other tools?**
The NuGet Scraper connects with almost any cloud service or web app through [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JavaScript/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

### Related Actors

Auditing dependencies and packages across ecosystems? Pair this with our other developer-data scrapers:

- [npm Package Scraper](https://apify.com/hipersoft/npm-scraper) — metadata, dependencies, licenses and downloads for JavaScript packages from npm.
- [PyPI Package Scraper](https://apify.com/hipersoft/pypi-scraper) — metadata, dependencies, licenses and downloads for Python packages from PyPI.
- [crates.io Scraper](https://apify.com/hipersoft/crates-scraper) — Rust crate metadata, versions, licenses and download trends.
- [Docker Hub Scraper](https://apify.com/hipersoft/docker-hub-scraper) — image metadata, pulls, stars and tags from Docker Hub.

### Notes

Original clean-room implementation. This Actor reads only publicly available NuGet package data. It is an independent tool and is not affiliated with, endorsed by, or sponsored by the .NET Foundation or Microsoft; "NuGet" is a trademark of its respective owner.

# Actor input Schema

## `packages` (type: `array`):

Exact NuGet package ids to look up, e.g. "Newtonsoft.Json", "Serilog", "AutoMapper". One row is returned per id. Combine with a search query below, or use either on its own.

## `search` (type: `string`):

Free-text query run against the NuGet registry (matches id, description and tags), e.g. "json", "logging", "orm". Returns the top matching packages up to "Max items". Leave empty to only use the exact ids above.

## `maxItems` (type: `integer`):

Maximum number of packages to return in total across the exact ids and the search query.

## `prerelease` (type: `boolean`):

When enabled, prerelease versions are considered so the reported latest version and search results can include prerelease builds. When disabled, only stable releases are used.

## Actor input object example

```json
{
  "packages": [
    "Newtonsoft.Json",
    "Serilog"
  ],
  "search": "json",
  "maxItems": 100,
  "prerelease": false
}
```

# Actor output Schema

## `results` (type: `string`):

The scraped results as dataset items.

# 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 = {
    "packages": [
        "Newtonsoft.Json"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/nuget-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 = { "packages": ["Newtonsoft.Json"] }

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/nuget-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "packages": [
    "Newtonsoft.Json"
  ]
}' |
apify call hipersoft/nuget-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/nuget-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/YlqSpbeJM13EUbDAs/builds/xpNetmf906GhoygYb/openapi.json
