Hex.pm Package Scraper avatar

Hex.pm Package Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Hex.pm Package Scraper

Hex.pm Package Scraper

Scrape Hex.pm - the package manager for Erlang/Elixir. Search packages or fetch by name. Returns downloads, versions, owners, licenses, and repository links.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Scrape package data from Hex.pm — the package manager for the Erlang ecosystem (Elixir, Erlang, Gleam, and more). This actor uses the official public Hex.pm REST API with no authentication required.

What can it do?

  • Search packages by keyword with configurable sort order (recent downloads, total downloads, alphabetical, etc.)
  • Fetch specific packages by exact name (e.g. phoenix, ecto, jason)
  • Returns rich metadata: download statistics, versions, owners, licenses, repository links, and more

Input

FieldTypeDescription
modesearchPackages | getByNameOperation mode. Default: searchPackages
searchQuerystringFree-text search query. Default: phoenix
packageNamesstring[]Exact package names for getByName mode
sortenumSort order for search results. Default: recent_downloads
maxItemsinteger (1–500)Maximum packages to return. Default: 50

Sort options

ValueTitle
recent_downloadsRecent downloads
total_downloadsTotal downloads
inserted_atNewest packages
updated_atRecently updated
nameAlphabetical name
{
"mode": "searchPackages",
"searchQuery": "phoenix",
"sort": "recent_downloads",
"maxItems": 50
}

Example input — Fetch by name

{
"mode": "getByName",
"packageNames": ["phoenix", "ecto", "jason"]
}

Output

Each record in the dataset represents one Hex.pm package.

FieldTypeDescription
packageNamestringPackage name on Hex.pm
descriptionstringPackage description
licensesstring[]List of SPDX license identifiers
linksobjectLinks from package metadata (GitHub, Changelog, etc.)
totalDownloadsintegerAll-time download count
recentDownloadsintegerDownloads in the last 90 days
weeklyDownloadsintegerDownloads in the last 7 days
insertedAtstringISO timestamp when package was first published
updatedAtstringISO timestamp of latest update
latestVersionstringLatest stable version (falls back to latest pre-release)
ownersstring[]Package owner usernames
repositoryUrlstringSource repository URL (GitHub, GitLab, etc.)
sourceUrlstringHex.pm package page URL
recordTypestringAlways "package"
scrapedAtstringISO timestamp when record was scraped

Example output record

{
"packageName": "phoenix",
"description": "Peace of mind from prototype to production",
"licenses": ["MIT"],
"links": {
"GitHub": "https://github.com/phoenixframework/phoenix",
"Changelog": "https://github.com/phoenixframework/phoenix/blob/master/CHANGELOG.md"
},
"totalDownloads": 156000000,
"recentDownloads": 4200000,
"weeklyDownloads": 380000,
"insertedAt": "2014-01-30T00:00:00Z",
"updatedAt": "2025-05-01T12:00:00Z",
"latestVersion": "1.7.14",
"owners": ["chrismccord"],
"repositoryUrl": "https://github.com/phoenixframework/phoenix",
"sourceUrl": "https://hex.pm/packages/phoenix",
"recordType": "package",
"scrapedAt": "2025-05-30T10:00:00+00:00"
}

Frequently Asked Questions

Does this require an API key? No. The Hex.pm API is fully public and does not require authentication.

Can I get all packages on Hex.pm? Yes — leave searchQuery empty and use sort=recent_downloads with a high maxItems. The API paginates automatically.

What is the difference between recent_downloads and total_downloads? recent_downloads covers the last 90 days; total_downloads is the all-time count. Both are available in the output.

What ecosystems does Hex.pm cover? Hex.pm hosts packages for Elixir, Erlang, and Gleam — all languages that run on the BEAM virtual machine.

How often is the data updated? Hex.pm data is live — each run fetches real-time data from the official API.

Can I search for multiple queries in one run? Each run supports one search query. To scrape multiple queries, run the actor multiple times or use getByName mode with a list of package names.