ParseForge Scrapers

Hackage Haskell Packages Scraper

parseforge/hackage-haskell-packages-scraper

BusinessDeveloper toolsAutomation

Searches Hackage for Haskell packages by term and returns each package's metadata as a flat row: name, version, description, license, maintainer, category, upload date, and dependencies.

Run this scraper See the API call
Total users
2
Monthly active
1
Total runs
44
Bookmarked
0
Rating
Not rated yet
Last modified
12 days ago

Overview

ParseForge

Hackage Haskell Packages Scraper

Scrape Haskell package metadata from Hackage by search term, up to a million packages per run. Every package comes with its name, version, description, license, maintainer, and dependencies. No API key required. Export to CSV, JSON, Excel, or XML.

Finding the right Haskell library on Hackage means sifting through thousands of packages by hand. The Hackage website has no bulk export, and the API returns one package at a time. This Actor searches Hackage by any term, reads the full metadata for every matching package, and returns it all in one flat dataset.

Who uses it What they scrape Hackage for
Haskell developers Audit every package that depends on a library before upgrading it.
Security researchers Find all packages maintained by a specific author to check for abandoned dependencies.
Open source analysts Measure ecosystem growth by tracking new package registrations over time.
DevOps engineers Build a private mirror of packages matching a license filter for compliance.

What it does

This Actor searches Hackage for packages matching a query and returns each package's metadata as a flat row.

  • ๐Ÿ” Search by term: provide any keyword and get every package whose name matches, from 'lens' to 'servant'.
  • ๐Ÿ“ฆ Full metadata: name, version, synopsis, description, license, maintainer, category, upload date, and dependency list.
  • โš™๏ธ Configurable limit: set a cap from 1 to 1,000,000 packages so you control the run size and cost.

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

What you can do with Hackage data

๐Ÿ“‹ Audit dependency chains.

A Haskell team searches for a core library, exports every package that depends on it, and reviews the list before a major version bump.

๐Ÿ›ก๏ธ Check maintainer activity.

A security researcher scrapes all packages by a maintainer, cross-references upload dates, and flags any that have not been updated in two years.

๐Ÿ“Š Track ecosystem growth.

An analyst runs a broad search monthly, counts new packages by category, and plots adoption trends for a quarterly report.

๐Ÿ—๏ธ Build a license-compliant mirror.

A DevOps engineer scrapes packages with a BSD3 license, filters the results, and feeds the list into a private Hackage mirror script.

Why choose this scraper

What you get
Bulk export Pull hundreds or thousands of package records in one run instead of clicking through pages.
Fixed schema Every row has the same columns, so you can merge runs or pipe results straight into a database.
No auth Reads the public Hackage index. No account, no token, no rate-limit headache.

How it compares

Two other Hackage scrapers exist on Apify. This Actor focuses on search-based bulk metadata extraction with a configurable item limit.

Feature ParseForge Hackage Haskell Package Scraper Hackage Packages Scraper - Haskell Package Search
Search by query term Yes Yes Yes
Fetch specific package by name Yes, via search term Yes Not listed
Configurable max items limit Yes, 1 to 1,000,000 Not listed Not listed
Full package metadata Yes, including dependencies Yes Not listed
Dependency list per package Yes Not listed Not listed

Configure the run

Drive the Actor with a search term, and set a maximum package count so only the top N matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
  "searchQuery": "lens",
  "maxItems": 10
}

A larger pull:

{
  "searchQuery": "lens",
  "maxItems": 200
}

Pricing

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

Results collected Approximate cost
100 results $2.10
1,000 results $21.00
10,000 results $210.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 Hackage Haskell 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 Hackage 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/hackage-haskell-packages-scraper"

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

Troubleshooting

Why am I getting no results for my search term?

The search matches package names only, not descriptions. Try a shorter or more common term. Check the spelling. If the package exists but the name is different, the search will miss it.

The run stopped before reaching my maxItems limit.

The Actor stops when there are no more matching packages on Hackage. If your search term matches 47 packages and you set maxItems to 100, the run ends after 47 results.

Some fields are empty in my dataset.

Not every package on Hackage has a maintainer, category, or description filled in. Empty fields mean Hackage did not provide that metadata for that package.

The run is taking a long time.

Large maxItems values mean more requests. The Actor processes packages sequentially to be polite to Hackage. Reduce maxItems or use a more specific search term to speed things up.

I got an error about the input schema.

Make sure you provided a searchQuery string. The field is required. If you left it empty, the Actor cannot start.

FAQ

Question Answer
What data does this Actor return for each package? It returns the package name, version, synopsis, full description, license, maintainer, category, upload date, and the list of dependencies. The exact fields are shown in the sample output on the Actor's page.
Can I scrape a specific package by name instead of searching? Yes. Enter the exact package name as the search term and set maxItems to 1. The Actor will return that package's metadata if it exists.
Does this Actor handle Hackage's rate limiting? The Actor reads Hackage's public pages at a polite rate. If you need very large runs, the built-in request queue spaces requests so you stay within reasonable limits.
What search terms work best? Any term that appears in a package name works. Try 'json', 'http', 'parser', or a library name like 'aeson'. The search matches package names, not descriptions.
Can I filter by license or maintainer inside the Actor? The Actor returns all matching packages. You can filter by license, maintainer, or any other field after the run by loading the dataset into a spreadsheet or using Apify's dataset filtering.
How many packages can I scrape in one run? Free users can scrape up to 10 packages as a preview. Paid users can set maxItems up to 1,000,000, limited only by how many packages match the search term.
Does this Actor need a Hackage account or API key? No. It reads the public Hackage website directly. You do not need to register an app or obtain credentials.
What output formats are supported? You can export the dataset as CSV, JSON, Excel, or XML from the Apify console or via the API.
Can I schedule this Actor to run automatically? Yes. Apify supports scheduled runs. Set a daily or weekly schedule to track new package releases or monitor changes over time.
Does the Actor return dependency version constraints? It returns the list of dependency package names. Version constraint details depend on what Hackage displays on the package page at the time of the run.

Related actors

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 haskell.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.

Input

FieldTypeWhat it doesDefault
searchQuery required string Term to search Hackage packages for (for example lens, aeson, servant). Matching package names are returned. lens
maxItems integer Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000 10

Pricing

from $19.00 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.019 to $0.021

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

API

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST ยท run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~hackage-haskell-packages-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "helloWorld": 123
  }'

Examples

Input that runs as-is.

input.json
{
  "helloWorld": 123
}

Reviews

No reviews yet. Be the first.

Issues

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

Related scrapers

Run Hackage Haskell Packages Scraper on Apify All scrapers