NuGet v3 Feed Extractor
Pricing
from $0.35 / 1,000 records
NuGet v3 Feed Extractor
Point at any NuGet v3 service index (nuget.org, Azure Artifacts, MyGet, GitLab, self-hosted BaGet/Gitea) and get one structured row per package: version, downloads, tags, license, authors.
Pricing
from $0.35 / 1,000 records
Rating
0.0
(0)
Developer
Datamule
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Point at any NuGet v3 service index and export its packages as a clean, structured dataset — one row per package, straight from the feed's own self-describing v3 API.
The NuGet v3 protocol is self-describing: a feed's service index.json
advertises its capabilities as a list of resources keyed by @type
(SearchQueryService, RegistrationsBaseUrl, PackageBaseAddress, …). This
actor resolves the feed's own advertised search endpoint and queries it, so
one actor works against every v3 feed in existence — no per-host scraper, no
hardcoded endpoints.
Unlike the nuget.org-only scrapers, this runner points at any v3 feed:
- nuget.org — the central public registry (450k+ packages)
- Azure Artifacts — Azure DevOps package feeds
- GitLab — the GitLab package registry
- MyGet, JFrog Artifactory, Sonatype Nexus
- self-hosted BaGet / Gitea / Forgejo package registries
Modes
The run mode is auto-selected from the input fields you set:
| mode | when | emits |
|---|---|---|
| search | query is set | one row per package matching the search |
| list (default) | query is empty | one row per package the feed returns for an empty query |
| discovery | discoveryOnly: true | a single row describing the feed — advertised services, resource count, resolved search URL, total package count |
Input
{"indexUrl": "https://api.nuget.org/v3/index.json","query": "json","prerelease": true,"maxRecords": 100}
indexUrl(required) — the v3 service index URL. Examples:https://api.nuget.org/v3/index.json,https://www.myget.org/F/nunit/api/v3/index.json.query— search term. Leave empty for list mode (all packages).prerelease— include beta/rc/alpha versions (bool).packageType— optional type filter (Dependency,DotnetTool,Template, …) — honoured by feeds that implement it.discoveryOnly— describe the feed only (one row).maxRecords— global cap; pagination stops when reached. Leave empty for everything.apiKey/extraHeaders— optional auth for private feeds (sent asX-NuGet-ApiKey/ raw headers). Never required for public feeds, never logged.
Output
One flat, fully-nullable row per package:
| field | example |
|---|---|
packageId | Newtonsoft.Json |
latestVersion | 13.0.5-beta1 |
title / description / summary | Json.NET / … |
authors / owners | James Newton-King |
tags | ["json"] |
totalDownloads | 8621110743 |
verified | true |
versionCount | 54 |
projectUrl / licenseUrl / iconUrl | … |
packageTypes | ["Dependency"] |
latestVersionUrl / registrationUrl | … |
_indexUrl / _searchUrl / _totalHits | feed + resolved-search metadata |
_raw | the lossless original search entry |
Every optional field is nullable and read by key presence, so a feed that
spells totalDownloads differently (nuget.org totalDownloads vs MyGet
totaldownloads) or omits iconUrl/tags never drops data or crashes — it
just yields null for that column.
Behaviour
- A body that is not a v3 service index (HTML, 404 text, JSON without a
resourceslist) fails fast with a clear message. - A feed that advertises no
SearchQueryServicefails fast honestly in search/list mode (discovery mode still reports what it does support). - An empty result is 0 records and a clean exit — never a crash.
- Transient
5xx/429responses are retried with backoff (honoursRetry-After).
Pricing
Pay-per-event: one record event per package row returned.