Conda Repodata Extractor
Pricing
from $0.35 / 1,000 packages
Conda Repodata Extractor
Point at any Conda channel's repodata.json and get one structured row per package: name, version, build, subdir, license, md5/sha256, size, timestamp, depends and constrains.
Pricing
from $0.35 / 1,000 packages
Rating
0.0
(0)
Developer
Datamule
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Point at any Conda channel's repodata.json and get one clean, structured row per package.
Every Conda channel — conda-forge, bioconda, PyTorch, NVIDIA, the Anaconda pkgs/main defaults, and the tens of thousands of self‑hosted, org and anaconda.org channels — publishes the identical repodata.json index for each platform subdir. This actor speaks that one standard, so a single actor spans every Conda channel in existence — no per‑channel scraper, no host enumeration.
Give it a channel and a subdir; get back a flat, fully‑typed dataset row for every package build, ready for a spreadsheet, a database, a dependency‑graph, a license audit or an SBOM.
What it does
- Any channel, one input. Pass a channel base (
https://conda.anaconda.org/pytorch) + asubdir, or paste a full.../<subdir>/repodata.jsonURL directly. A compressed.json.bz2/.json.zstURL is normalized to the plain.json. - Both package maps, merged. conda ships
.tar.bz2builds underpackagesand the newer.condabuilds underpackages.conda. This actor merges both into one globally‑sorted stream — nothing is missed, nothing is double‑counted. - Memory‑flat streaming.
repodata.jsonfor a big subdir (e.g.conda-forge/linux-64) is hundreds of megabytes. The feed is streamed to disk and parsed incrementally, so RAM stays flat regardless of channel size, andmaxRecordsstops early. - Deterministic under a cap. Records are emitted in sorted filename order, and
repodata.jsonis an immutable artifact — so a capped run always returns the same first N records.
Input
| Field | Required | Description |
|---|---|---|
channelUrl | ✅ | A conda channel base (https://conda.anaconda.org/pytorch) or a full repodata.json URL. |
subdir | Platform subdir used to complete a channel base. Default noarch. One of noarch, linux-64, linux-aarch64, linux-ppc64le, osx-64, osx-arm64, win-64, win-arm64. Ignored when channelUrl is already a full repodata URL. | |
packageFilter | Case‑insensitive substring matched against each package name; non‑matching records are skipped. | |
maxRecords | Global cap on emitted rows (each row = one package record = one billable event). | |
bearer | Bearer token for a private/gated channel. Never logged. | |
extraHeaders | Extra HTTP headers as a JSON object for gated channels. Never logged. |
Example inputs
{ "channelUrl": "https://conda.anaconda.org/pytorch", "subdir": "noarch" }
{ "channelUrl": "https://conda.anaconda.org/nvidia", "subdir": "linux-64", "packageFilter": "cuda", "maxRecords": 500 }
{ "channelUrl": "https://repo.anaconda.com/pkgs/main/osx-arm64/repodata.json" }
Output
One row per package record (from both the .tar.bz2 and .conda maps):
| Column | Description |
|---|---|
filename | The package filename (the repodata map key), e.g. botorch-0.1.0-0.tar.bz2. |
name | Package name. |
version | Package version. |
build / buildNumber | Build string and build number. |
subdir | Platform subdir. |
license | Declared license (SPDX‑ish string, when present). |
md5 / sha256 | Artifact checksums. |
size | Artifact size in bytes. |
timestamp | Build timestamp, normalized to ISO‑8601 UTC. |
depends | Array of runtime dependency specs ("pytorch >=1.1", …). |
constrains | Array of optional‑constraint specs. |
track_features | Feature flags (space‑delimited string), when present. |
_raw | The complete original record — nothing is ever dropped (license_family, noarch, platform, …). |
_source / _subdir / _packageCount | The exact repodata URL, the subdir, and the total record count. |
Every field is nullable and read by key presence — a channel that omits license / depends / constrains / track_features simply yields null for that column, never an error.
Notes & scope
- Public metadata only. This reads a channel's published package index — it does not download the packages themselves.
- GTFS‑style honesty. An empty subdir, or a
packageFilterthat excludes everything, returns 0 records and a clean success. A URL that isn't conda repodata (an HTML error page, a 404 body, JSON without apackageskey) fails fast with a clear message. - Find channels on anaconda.org. Common bases:
https://conda.anaconda.org/<channel>and the Anaconda defaults athttps://repo.anaconda.com/pkgs/main.
Pricing
Pay‑per‑event: $0.0005 per package record returned. A capped run charges only for what it emits.