Packagist PHP Packages Scraper avatar

Packagist PHP Packages Scraper

Pricing

from $30.37 / 1,000 results

Go to Apify Store
Packagist PHP Packages Scraper

Packagist PHP Packages Scraper

Scrapes PHP package metadata from Packagist by keyword search or vendor/name list. Returns each package as a flat row with downloads, stars, latest version, license, and dependencies.

Pricing

from $30.37 / 1,000 results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

13 days ago

Last modified

Share

ParseForge

Packagist PHP Packages Scraper

Scrape PHP package metadata from Packagist by keyword search or vendor/name, up to a million per run. Every package comes with its downloads, stars, latest version, license, and dependencies. No API key required. Export to CSV, JSON, Excel, or XML.

Packagist's API rate-limits you and returns paginated JSON you have to stitch together. This reads the public package feeds directly, filtered by type or tags, and returns each match in one fixed schema. It also fetches full detail for a list of vendor/name packages you supply.

Who uses itWhat they scrape Packagist for
PHP developersAudit dependencies across a list of packages for version and license compliance.
DevOps engineersMonitor download counts and latest releases for a set of critical Composer packages.
Market researchersMap the PHP ecosystem by scraping packages tagged with a framework or category.

What it does

This Actor collects PHP package metadata from Packagist by keyword search or direct vendor/name list, and returns each package as a flat row.

  • 🔍 Search mode: find packages by keyword, optionally filtered by Composer type and tags.
  • 📦 Detail mode: fetch full metadata for a list of vendor/name packages you specify.
  • 🏷️ Tag filtering: narrow search results to packages tagged with specific labels like orm or framework.
  • 📊 Flat output: every package returns as one row with downloads, stars, version, license, and dependencies.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with Packagist data

📋 Audit dependency licenses.

A compliance team feeds a list of vendor/name packages and checks the license field for every dependency before a release.

📈 Track package popularity.

A developer advocate runs a weekly search for packages tagged 'symfony' and plots download counts to spot rising tools.

🔎 Discover new libraries.

A PHP developer searches for 'queue' with the library type filter and reviews the returned packages for a new project.

🔄 Monitor release cadence.

A DevOps engineer scrapes a list of production packages daily and alerts the team when a new version appears.

Why choose this scraper

What you get
No API keyReads public feeds directly, no registration or OAuth.
Fixed schemaEvery package returns the same fields, ready for analysis.
Two modesSearch broadly by keyword or fetch detail for a known list.
High volumeCollect up to a million packages per run.

How it compares

This Actor offers two distinct modes (search and detail) and tag filtering, while the other Packagist scrapers focus on a single workflow.

FeatureParseForgePackagist PHP Package Scraper (gio21)Packagist PHP Package Scraper (chrisp1211)
Keyword search modeYesNot listedNot listed
Package detail by vendor/name listYesNot listedNot listed
Tag filteringYesNot listedNot listed
Composer type filterYesNot listedNot listed
Downloads and starsYesYesNot listed
License fieldYesYesNot listed
Dependencies listYesYesNot listed

Configure the run

Drive the Actor from a keyword search or a list of vendor/name packages, and filters run as each package is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
"mode": "search",
"query": "symfony",
"maxItems": 10
}

A larger pull:

{
"mode": "search",
"query": "symfony",
"maxItems": 200
}

Pricing

Pay-per-result: $0.0405 per result collected. You pay only for the results written to your dataset.

Results collectedApproximate cost
100 results$4.05
1,000 results$40.50
10,000 results$405.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the Packagist PHP Packages Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to Packagist through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/packagist-php-packages-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check your keyword spelling and try a broader term. If you are using type or tag filters, remove them temporarily to see if they are too restrictive. For Package detail mode, verify each name uses the exact vendor/name format.

The Actor returns fewer packages than my maxItems setting.

This is normal when Packagist has fewer matching packages than your limit. The Actor stops when it exhausts all results. Try a more general keyword or remove filters.

Some package fields are empty in the output.

Not every package on Packagist has a license, tags, or dependencies listed. Empty fields mean the package author did not provide that metadata.

The run fails with a timeout.

Large searches can take time. Increase the run timeout in the Actor's advanced settings, or reduce maxItems to fetch fewer packages per run.

I get an error when using Package detail mode.

Make sure every entry in the Package names list uses the vendor/name format (e.g., symfony/symfony). A missing slash or extra whitespace will cause a lookup failure.

FAQ

QuestionAnswer
Do I need a Packagist API key?No. This Actor reads the public feeds and package pages directly, so no registration or API key is required.
What fields does each package row contain?Each row includes the package name, description, downloads, stars, latest version, license, and a list of dependencies. The exact fields are shown in the sample output on the Actor's page.
Can I scrape a specific list of packages?Yes. Switch to Package detail mode and provide a list of vendor/name strings like symfony/symfony or laravel/framework.
How do I filter search results by package type?In Search mode, use the Package type dropdown to limit results to library, symfony-bundle, wordpress-plugin, or other Composer types.
Can I filter by tags?Yes. In Search mode, add tags like orm, framework, or testing to the Tag filter list, and only packages matching those tags will be returned.
How many packages can I scrape in one run?You can set the maximum up to 1,000,000 packages. The Actor stops when it reaches that count or runs out of matching results.
What export formats are supported?You can export your dataset to CSV, JSON, Excel, or XML from the Apify platform.
Does this Actor handle pagination automatically?Yes. It follows Packagist's search result pages and detail links until it collects the number of packages you requested.
Can I run this on a schedule?Yes. Apify supports scheduled runs, so you can set this Actor to scrape daily or weekly and track changes over time.
What is the difference between Search and Package detail modes?Search mode finds packages by keyword, type, and tags. Package detail mode fetches full metadata for a fixed list of vendor/name packages you already know.

Browse the full ParseForge collection for more scrapers.

🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Packagist.org. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.