Packagist Php Packages Scraper
Pricing
from $2.99 / 1,000 results
Packagist Php Packages Scraper
Search Packagist PHP packages, track download stats, and analyze vendor libraries. Easily download structured datasets in JSON, CSV, or Excel formats
Pricing
from $2.99 / 1,000 results
Rating
0.0
(0)
Developer
B2B Lead Generation
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Security
Limited permissionsShare
Packagist PHP Packages Scraper: PHP packages search and stats
Packagist PHP Packages Scraper collects public PHP package lists, summaries, download counts, and favorites from Packagist. You can search by keyword, look up specific vendor/package names, or walk through every package a vendor publishes. The extracted dataset easily exports to JSON, CSV, or Excel formats.
Use cases
- PHP package search: Pull the top Packagist matches for a library name before adding it to composer.json.
- Download stats: Compare all-time downloads and favorites for packages you already depend on.
- Vendor inventory: List a vendor such as Symfony, then attach the public summary and download total to each package.
- Type checks: Keep rows whose Composer type matches
library,symfony-bundle, or another category you specify. - Scheduled exports: Drop the same structured columns into a spreadsheet regularly so package lists stay easy to compare over time.
Input
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | array | ["laravel"] | Keywords sent for package search, one per line. Clear the list if you only want named packages or specific vendors. |
packageNames | array | empty | vendor/package names to load in detail, including download stats and version details. |
vendors | array | empty | Vendor slugs to collect. Each vendor is listed, and its packages are gathered up to your set cap. |
type | string | empty | Composer type to keep (e.g., library). Filtered on package metadata after retrieval. |
maxItems | integer | 100 | Maximum package rows per run (1 to 1000). |
requestDelaySecs | number | 0.3 | Pause between steps to ensure smooth runs. |
timeoutSecs | integer | 300 | Stops starting new tasks after this duration in seconds. |
requestTimeoutSecs | integer | 30 | Timeout per individual request. |
Package names are processed first, followed by vendor lists, and then general search queries. Duplicates are automatically merged so each package appears once.
Example input
{"searchQueries": ["laravel"],"packageNames": ["monolog/monolog"],"vendors": [],"type": "","maxItems": 100,"requestDelaySecs": 0.3,"timeoutSecs": 300,"requestTimeoutSecs": 30}
Data Output
Each extracted row gives you a clear snapshot of package information. The summary text uses packageDescription to keep structured datasets clean and readable.
{"name": "laravel/framework","packageDescription": "The Laravel Framework.","url": "[https://packagist.org/packages/laravel/framework](https://packagist.org/packages/laravel/framework)","repository": "[https://github.com/laravel/framework](https://github.com/laravel/framework)","downloads": 593824320,"favers": 35448,"latestVersion": "","packageType": "","mode": "search","scraped_at": "2026-10-12T00:00:00+00:00"}
Detailed lookups and vendor listings also populate additional fields like latestVersion, packageType, and downloadsMonthly whenever that data is available. If an invalid package name is provided, the run continues smoothly and records the attempt:
{"error": "Package not found","input": "not-a-real-vendor/not-a-real-package","status": 404,"mode": "detail","scraped_at": "2026-10-12T00:00:00+00:00"}
| Field | Type | Description |
|---|---|---|
name | string | Full package name (vendor/package). |
packageDescription | string | Summary description of the package. |
url | string | Web link to the package listing. |
repository | string | Direct link to the source repository. |
downloads | integer | Total all-time download count. |
favers | integer | Number of community favorites/stars on the platform. |
latestVersion | string | Newest release version available. |
packageType | string | Declared Composer type (e.g., library, bundle). |
downloadsMonthly | integer | Monthly download count when available. |
mode | string | Collection mode (detail, vendor, or search). |
scraped_at | string | UTC timestamp of when the row was recorded. |
error | string | Present if an entry could not be retrieved. |
input | string | The requested search term, package, or vendor associated with an error. |
status | integer | Result status code for tracking output status. |
FAQ
How fresh are download stats? Stats represent current counts at the moment of collection. Search results include overall download counts and favorites, while direct detail lookups break numbers down further into monthly and total figures.
What happens if a package name is wrong or missing? If a specific package name isn't found, it gets saved as an error row in your dataset detailing what failed. The rest of your batch will continue running normally without interruption.
Why is the summary named packageDescription?
We use packageDescription to ensure column naming remains compatible and consistent across spreadsheet and database exports. The content matches the main summary text of the package.
Can I export data to CSV or Excel? Yes! You can download your completed run data directly as JSON, CSV, or Excel depending on your workflow needs.
Trademark Notice
Packagist PHP Packages and related names, logos, and trademarks belong to their respective owners. Their use in this documentation is solely to identify the target topic and does not imply affiliation, sponsorship, endorsement, or official partnership.
Disclaimer
This tool is an independent solution and is not officially affiliated with, endorsed by, or sponsored by Packagist or its maintainers. All data is gathered from public sources. Users are responsible for complying with relevant usage terms and licensing requirements.
Is web scraping legal?
This scraper collects publicly available information without requiring user accounts or bypassing access controls. Collecting public data is widely practiced, but usage contexts matter:
- Personal data: If your results happen to contain personal information (such as personal contributor names or details), local regulations such as GDPR or CCPA may apply. Ensure you handle personal information responsibly and with legitimate purpose.
- Copyright: Always ensure you respect copyrighted work such as long-form content or media. Do not republish protected material without permission.
- Terms & guidelines: Keep automated requests reasonable, respect community rate limits, and follow standard attribution guidelines.
- Legal advice: This documentation provides general operational context and is not legal advice. Consult a legal expert if you have specific regulatory questions.
For more information, feel free to read Apify's helpful overview: Is web scraping legal?