NuGet Package Scraper - Downloads, Versions & License Info
Pricing
$1.00 / 1,000 item scrapeds
NuGet Package Scraper - Downloads, Versions & License Info
Look up NuGet.org packages by exact ID: latest stable version, total downloads, authors, license and project URLs, tags. Exact-ID matching, not-found handling. $0.001 per item.
Pricing
$1.00 / 1,000 item scrapeds
Rating
0.0
(0)
Developer
Gio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Look up any NuGet.org package by its exact package ID and get back the latest stable version, total download count, authors, license and project URLs, tags and version history size, in structured JSON. Built for .NET dependency audits, library popularity research and vendor due diligence.
Why use this scraper
NuGet.org shows package metadata on its website, but pulling total downloads, latest stable version, license URL and author list for a list of packages at once means opening each package page by hand or writing and maintaining your own HTTP client against NuGet's internal endpoints. Teams doing dependency audits across many repositories, or comparing the popularity of competing .NET libraries before choosing one, need this data in bulk, not one page at a time.
This Actor takes a single package ID or a list of hundreds and returns one clean row per package: the current stable release, how many times it has been downloaded in total, who maintains it, and where its license and project page live. Packages that don't exist or only have pre-release versions come back as a clearly labeled item instead of breaking the run.
Overview
For each package ID, the Actor queries the public NuGet package search service and returns the latest stable (non pre-release) version, its description, author list, total download count across all versions, tags, project and license URLs, how many stable versions exist, and the download count of that specific latest version. A run of 20 packages typically finishes in a few seconds since no browser rendering is involved.
Supported inputs
| Field | Type | Required / default | Description |
|---|---|---|---|
packageId | string | Optional, prefilled with Newtonsoft.Json | A single NuGet package ID |
packageIds | array of strings | Optional | Multiple package IDs in one run, duplicates removed (case insensitive) |
maxItems | integer | Default 20, min 1, max 100 | Maximum number of packages to process in the run |
At least one package ID must be supplied via packageId or packageIds, otherwise the run returns a single warning item and exits without charging.
Use cases
- .NET dependency audits - check total downloads, latest version and license for every package in a project's
.csprojorpackages.configfile at once, to flag unmaintained or unusually low-adoption dependencies before a security review. - Library popularity comparison - compare total and latest-version download counts across two or more competing packages (for example, different JSON or logging libraries) before picking one for a new project.
- License compliance checks - pull the
licenseUrlfor every package a codebase depends on to build a license inventory for legal or compliance review. - Package catalog enrichment - feed a list of package IDs scraped or exported from another source (a GitHub repo scan, an internal package registry mirror) into this Actor to attach live NuGet metadata to each entry.
- Vendor and maintainer research - look up the
authorsfield across a set of packages to understand who maintains critical pieces of a .NET dependency tree.
How it works
- The Actor normalizes
packageIdandpackageIdsinto one deduplicated list (case insensitive) and caps it atmaxItems. - For each package ID, it queries NuGet's public package search service and matches the exact package ID against the returned candidates, since the search service can return several packages for a partial match.
- Pre-release versions are excluded from the match, so the
versionfield returned is always the latest stable release. - Each successfully matched package produces one row with its metadata; a package ID with no match produces a row with
packageIdand anerrorfield instead of stopping the run. - Failed lookups are retried automatically with increasing delay before being marked as not found, to absorb transient NuGet service hiccups rather than reporting a false negative.
Input configuration - 3 examples
Single package:
{"packageId": "Newtonsoft.Json","maxItems": 1}
Multiple packages for a comparison:
{"packageIds": ["Newtonsoft.Json", "System.Text.Json", "Serilog"],"maxItems": 10}
Larger batch for a dependency audit:
{"packageIds": ["Newtonsoft.Json", "Dapper", "AutoMapper", "FluentValidation", "Polly"],"maxItems": 50}
Output sample
Real output from a reference run against Newtonsoft.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": 9325394018,"tags": ["json"],"projectUrl": "https://www.newtonsoft.com/json","licenseUrl": "https://www.nuget.org/packages/Newtonsoft.Json/13.0.4/license","versionsCount": 53,"latestVersionDownloads": 239977051,"scrapedAt": "2026-10-21T09:18:42.779Z"}
A package ID that cannot be matched returns:
{"packageId": "Some.Nonexistent.Package","error": "not_found"}
Key output fields
| Field | Type | Description |
|---|---|---|
id | string | Package ID as registered on NuGet |
version | string | Latest stable (non pre-release) version |
description | string or null | Package description |
authors | array or null | Listed package authors |
totalDownloads | integer or null | Total downloads across all versions |
tags | array | Package tags, empty array when none are set |
projectUrl | string or null | Project homepage URL, when set |
licenseUrl | string or null | License page URL, when set |
versionsCount | integer | Number of stable versions listed |
latestVersionDownloads | integer or null | Downloads of the specific latest version |
error | string | Present only on packages that could not be matched |
scrapedAt | string (ISO) | Timestamp of extraction |
Pricing
Pay per event: $0.001 per package item successfully returned ("Item scraped" event). Error and warning items are not charged. There is no separate Actor start fee. On the free Apify plan, maxItems is capped at 10 per run so you can inspect the real output format before upgrading.
What makes this richer than the competition
Compared to chrisp1211/nuget-scraper-max and brunofin/nuget-package-stats, two other small NuGet lookup Actors on the Store, this Actor returns the fuller metadata set in one pass: total downloads, latest-version-specific downloads, full author list, tags, project and license URLs and version count together, with exact-package-ID matching against NuGet's search service so a common package name does not accidentally return the wrong library. It also handles not-found packages and pre-release-only packages explicitly as labeled items instead of errors that stop the run.
Notes & limitations
- Only exact package IDs are supported; there is no fuzzy or keyword search across the NuGet catalog.
- Pre-release versions are intentionally excluded from
version; a package that has only ever shipped pre-release versions is reported as not found. - Per-version release notes, target framework lists, and declared package dependencies are not part of the output.
- The license text itself is not fetched, only the
licenseUrlNuGet provides, when it provides one. - Packages are looked up one at a time per run, subject to the NuGet public service's own rate limits on very large batches.
FAQ
Can I look up a package by a partial or fuzzy name? No, you need the exact NuGet package ID. Use NuGet.org's own search to find the exact ID first if you only have a partial name.
What happens if I request a package that only has pre-release versions? It comes back as a not-found item, since the Actor only reports stable releases.
Does totalDownloads include pre-release downloads?
Yes, totalDownloads reflects NuGet's all-versions download counter, including pre-release versions; only the reported version itself is restricted to stable.
How many packages can I process in one run?
Up to maxItems, capped at 100 per run (10 on the free Apify plan); larger catalogs can be split across multiple runs.
Does this return the package's dependency list? No, dependencies and target frameworks are not part of the current output.
Is a browser or proxy needed to run this? No, it queries NuGet's public search service directly with plain HTTP requests.
What's the difference between totalDownloads and latestVersionDownloads?
totalDownloads is the lifetime download count across every version of the package ever published. latestVersionDownloads is the download count of just the specific latest stable version, which is useful for spotting a package whose overall popularity comes mostly from an old, possibly abandoned release.
Can this replace manually checking a .csproj file against NuGet.org?
For metadata, yes: feed it the package IDs from your project file and it returns the same version, download and license data you'd otherwise look up one page at a time.
For AI Agents & LLM Apps
This Actor is available over the Apify MCP server (mcp.apify.com) for direct use from Claude, ChatGPT or any MCP-compatible agent, and over the standard Apify API.
curl "https://api.apify.com/v2/acts/gio21~nuget-packages-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-X POST \-H "Content-Type: application/json" \-d '{"packageId": "Newtonsoft.Json", "maxItems": 1}'
Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by NuGet, the .NET Foundation, Microsoft or any of their subsidiaries. It reads publicly available package metadata. All trademarks mentioned are the property of their respective owners.
SEO Keywords
NuGet scraper, NuGet package metadata, NuGet download stats, .NET dependency audit tool, NuGet API scraper, NuGet package downloads.