ParseForge Scrapers

CTAN TeX Packages Scraper

parseforge/ctan-tex-packages-scraper

Developer toolsEducationAutomation

Scrapes CTAN TeX package metadata by keyword search. Returns each package as a flat row with key, name, caption, and topics, with an option to hydrate full detail JSON.

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

Overview

ParseForge

CTAN TeX Packages Scraper

Scrape CTAN TeX package metadata by keyword or name, up to a million packages per run. Every package comes with its key, caption, topics, and optional full detail JSON. No login or API key. Export to CSV, JSON, Excel, or XML.

CTAN's package list is spread across thousands of directory pages with no single download. This reads the official JSON API directly, matching packages by name, key, or caption substring, and returns each match in one fixed schema. You can hydrate full package details with one checkbox.

Who uses it What they scrape CTAN for
LaTeX package authors Monitor how their own packages are indexed and captioned on CTAN.
TeX distribution maintainers Audit package metadata across the entire CTAN archive for consistency.
Academic librarians Build a searchable catalog of LaTeX packages available for researchers.
Dev tool builders Populate a package browser or IDE autocomplete with live CTAN data.

What it does

This Actor collects CTAN TeX package metadata by keyword search and returns each package as a flat row, with an option to fetch full detail JSON for every match.

  • ๐Ÿ”Ž Keyword search: substring match against package key, name, or caption, case-insensitive.
  • ๐Ÿ“ฆ Bulk collection: set a maximum up to 1,000,000 packages per run and let the Actor paginate.
  • ๐Ÿ’ง Optional hydration: toggle full detail JSON per package, including version, author, and dependencies.

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

What you can do with CTAN data

๐Ÿ“‹ Audit package metadata.

A TeX distribution maintainer searches for all packages with a topic keyword, hydrates details, and checks for missing license or author fields before a release.

๐Ÿ” Build a package search engine.

A dev tool builder scrapes the full CTAN catalog, stores the flat rows in a database, and powers a web search interface for LaTeX users.

๐Ÿ“Š Track package ecosystem growth.

A researcher runs the Actor monthly with no search filter, collects all package keys, and plots the growth of CTAN over time.

๐Ÿ›  Populate IDE autocomplete.

A plugin author scrapes package names and captions, then ships the list as a completion source inside a LaTeX editor.

Why choose this scraper

What you get
No API key Reads CTAN's public JSON endpoint directly, no registration or token.
Flat schema Every package returns as one row with key, name, caption, and topics.
Full detail option Hydrate each package to get version, author, license, and dependencies.
Large runs Collect up to a million packages in a single run with automatic pagination.

How it compares

This Actor and the CTAN Packages Scraper both collect metadata from CTAN, but they differ in hydration support and the fields they expose.

Feature ParseForge CTAN Packages Scraper - LaTeX Package Metadata
Keyword search by package name or caption Yes, case-insensitive substring match Not listed
Hydrate full package detail JSON Yes, optional per-package detail fetch Not listed
Configurable max items per run Yes, up to 1,000,000 Not listed
Returns package topics Yes Yes
Returns package key and caption Yes Yes

Configure the run

Drive the Actor with a package name or keyword substring, set a maximum item count, and choose whether to fetch full detail JSON for each match. The Input tab lists every parameter.

A first run with the defaults:

{
 "maxItems": 10
}

A larger pull:

{
 "maxItems": 200
}

Pricing

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

Results collected Approximate cost
100 results $0.85
1,000 results $8.50
10,000 results $85.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 CTAN TeX 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 CTAN 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/ctan-tex-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 search term. The match is a case-insensitive substring against package key, name, and caption. Try a shorter or more general keyword. Also verify that maxItems is set to at least 1.

The run is very slow with hydration enabled.

Hydration fetches one detail JSON per package, so a run of 1,000 packages makes 1,000 extra requests. Disable hydration if you only need the basic fields, or reduce maxItems.

Some packages are missing author or license fields even with hydration.

CTAN's detail JSON only contains what package authors have provided. If a package uploader did not fill in the author or license metadata, those fields will be empty in the output.

The Actor stopped before reaching my maxItems limit.

The Actor stops when CTAN's API returns no more matching packages. If your search term matches fewer packages than your maxItems, the run ends early. Try broadening your search.

I get a timeout error on large runs.

Large hydrated runs can take a long time. Increase the Actor's timeout in the run settings, or split the work into multiple runs with different search terms.

FAQ

Question Answer
Does this Actor need a CTAN account or API key? No. It reads CTAN's public JSON endpoint directly, so no registration, token, or login is required.
What does the hydrate option do? When hydrate is enabled, the Actor fetches each package's detail JSON from CTAN, which includes version, author, license, dependencies, and long description. This makes the run slower because it issues one extra request per package.
How many packages can I collect in one run? You set the maximum with the maxItems field, up to 1,000,000. The Actor paginates through CTAN's JSON API until it reaches your limit or exhausts the matches.
Can I search for packages by topic? The search field matches against package key, name, and caption as a case-insensitive substring. If a topic word appears in the caption, the package will be returned.
What output formats are supported? You can export your dataset to CSV, JSON, Excel, or XML from the Apify platform.
Does this Actor download the actual.sty or.cls files? No. It collects only metadata from CTAN's JSON API. To download package archives, you would need a different Actor that fetches the zip files.
How do I get only a specific package by exact name? Enter the exact package key or name in the search field. The substring match will find it, and you can set maxItems to 1 if you only want that single result.
Is the Actor fast without hydration? Yes. Without hydration, the Actor makes one paginated request to the CTAN package list endpoint, which returns many packages per page. Hydration adds one request per package.
Can I run this on a schedule? Yes. Apify supports scheduled runs, so you can set this Actor to collect CTAN metadata daily, weekly, or monthly to track changes.
What fields are in the flat row output? Each row includes the package key, name, caption, and topics. When hydration is enabled, additional fields like version, author, license, and dependencies are added.

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 CTAN. 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
maxItems integer How many packages to collect per run. 10
search string Substring match against package key, name, or caption (case-insensitive). not set
hydrate boolean If true, the actor fetches each package's detail JSON (slower, more requests). true

Pricing

from $7.50 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.0075 to $0.0085

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~ctan-tex-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 CTAN TeX Packages Scraper on Apify All scrapers