MetaCPAN Perl Module Scraper - CPAN Distributions & Deps avatar

MetaCPAN Perl Module Scraper - CPAN Distributions & Deps

Pricing

from $0.50 / 1,000 results

Go to Apify Store
MetaCPAN Perl Module Scraper - CPAN Distributions & Deps

MetaCPAN Perl Module Scraper - CPAN Distributions & Deps

$0.5/1K ๐Ÿ”ฅ MetaCPAN scraper! Perl distributions โ€” version, author, license & dependencies. No key. JSON, CSV, Excel or API in seconds. Audit Perl deps & discover modules โšก

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

ninhothedev

ninhothedev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

MetaCPAN Perl Module Scraper

Scrape Perl distributions and modules from MetaCPAN โ€” version, author, license, abstract, release date, repository, bug tracker, download URL and dependency data โ€” with no API key, no login and no proxy required.

This Actor talks directly to the public MetaCPAN API (fastapi.metacpan.org), the same backend that powers metacpan.org. It returns one clean, flat row per CPAN release, ready for CSV, JSON, Excel or your data warehouse.


What this Actor does

SourceMetaCPAN public API (CPAN โ€” the Comprehensive Perl Archive Network)
API keyNot needed
ProxyNot needed (datacenter-clean)
OutputOne item per release (distribution at its latest version)
Speed~50 releases per request, paginated automatically
CostRoughly $0.5 per 1,000 releases

Features

  • Keyword search โ€” query CPAN like you would on metacpan.org and get the latest release of every matching distribution.
  • Direct distribution lookup โ€” pass exact distribution names (Mojolicious, DBI, Plack) and get their current release.
  • Dependency intelligence โ€” total dependency count plus the explicit list of runtime / requires modules.
  • Licensing data โ€” the declared license list (perl_5, artistic_2, mit, โ€ฆ) for compliance and OSS audits.
  • Repository & issue links โ€” GitHub/GitLab repository, bug tracker and homepage, pulled from the distribution metadata.
  • Only latest releases โ€” results are filtered to status:latest, so you never get stale versions polluting your dataset.
  • Robust by design โ€” Chrome-impersonating HTTP client with a plain-urllib fallback, retries with exponential backoff, and graceful handling of missing fields.

Input

FieldTypeDefaultDescription
modeselectsearchsearch (keyword queries) or distributions (exact names)
queriesarray["JSON", "Mojolicious"]Keywords or module names to search, used in search mode
distributionsarrayโ€”Exact distribution names, used in distributions mode (use dashes: List-Util)
maxItemsinteger100Maximum releases to push (max 1000)

Example โ€” search mode

{
"mode": "search",
"queries": ["JSON", "async", "web framework"],
"maxItems": 300
}

Example โ€” distributions mode

{
"mode": "distributions",
"distributions": ["Mojolicious", "DBI", "Plack", "Moose"],
"maxItems": 100
}

Output

Every item is one CPAN release:

{
"name": "Mojolicious-9.48",
"distribution": "Mojolicious",
"version": "9.48",
"author": "SRI",
"abstract": "Real-time web framework",
"license": ["artistic_2"],
"date": "2026-07-14T12:53:44+00:00",
"status": "latest",
"maturity": "released",
"main_module": "Mojolicious",
"download_url": "https://cpan.metacpan.org/authors/id/S/SR/SRI/Mojolicious-9.48.tar.gz",
"repository": "https://github.com/mojolicious/mojo",
"bugtracker": "https://github.com/mojolicious/mojo/issues",
"homepage": "https://mojolicious.org",
"dependency_count": 5,
"runtime_requires": ["IO::Socket::IP", "Pod::Simple"],
"provides_count": 112,
"url": "https://metacpan.org/dist/Mojolicious",
"source": "metacpan",
"scraped_at": "2026-07-28T12:00:00+00:00"
}

Field reference

FieldDescription
nameFull release name including version (JSON-4.11)
distributionDistribution name without version (JSON)
versionRelease version string
authorPAUSE ID of the uploading author (ISHIGAKI)
abstractShort description, capped at 2,000 characters
licenseList of declared licenses
dateRelease timestamp, normalised to ISO 8601 UTC
statusRelease status (always latest in search mode)
maturityreleased or developer
main_modulePrimary module namespace (JSON::XS)
download_urlDirect tarball URL on cpan.metacpan.org
repositorySource repository web URL
bugtrackerIssue tracker URL
homepageProject homepage
dependency_countNumber of declared dependencies across all phases
runtime_requiresModule names required at runtime
provides_countNumber of modules the distribution provides
urlCanonical metacpan.org page
sourceAlways metacpan
scraped_atUTC timestamp of the scrape

All fields are nullable โ€” missing metadata comes back as null rather than breaking your pipeline.


Use cases

  • Perl dependency research โ€” map which distributions depend on which runtime modules, spot heavy dependency trees, and audit supply chains before adopting a library.
  • Package discovery โ€” find every CPAN distribution matching a topic (JSON, ORM, async) with authors, versions and activity dates in one table.
  • Open-source intelligence โ€” track license distribution across the Perl ecosystem, find abandoned distributions by release date, or identify the most prolific PAUSE authors.
  • Developer tooling โ€” feed internal package registries, dashboards, dependency scanners, changelog bots or documentation portals with live CPAN metadata.

Pricing

Pay-per-event style economics: expect roughly $0.5 per 1,000 releases scraped. A typical 100-release run finishes in seconds on the 512 MB default memory setting.


If you're mapping package ecosystems beyond Perl, these pair well:


Notes & limitations

  • Only the latest release of each distribution is returned; historical versions are out of scope.
  • Search results come from MetaCPAN's ElasticSearch index and are ordered by relevance.
  • MetaCPAN is a public, free service โ€” please keep run volumes reasonable.
  • This Actor scrapes only publicly available, openly licensed package metadata. No personal data beyond public PAUSE author IDs is collected.

FAQ

Do I need a MetaCPAN account or API key? No. The MetaCPAN API is fully public and this Actor uses no credentials.

Can I look up a module instead of a distribution? Use search mode with the module name (e.g. JSON::XS) โ€” the matching distribution will be returned. In distributions mode you must use the dashed distribution name (JSON-XS).

Why is runtime_requires empty for some distributions? Some distributions declare no runtime requirements, or only declare build/configure/test phase dependencies. dependency_count still reflects the full declared set.