A scraper that collects and aggregates conference CFP and posting metadata from public sources.
This repository contains a lightweight conference aggregator that crawls public conference listing sites and produces a machine-readable dataset of conference postings at the repository root (conference-postings.json).
The collector currently implements scrapers for three sources:
wikicfp(WikiCFP)easychair(EasyChair CFP search)cfpwiki(cfp.wiki)
Extracted fields include conference name, year, dates, location, website URL, CFP text snippets, and categories metadata.
- Crawls listing and detail pages on WikiCFP, EasyChair, and cfp.wiki.
- Parses conference metadata and normalizes dates and acronyms.
- Merges new postings into a single JSON database at
conference-postings.json. - Provides single-site and full-collection CLI commands.
Running a collection script executes scripts/conference-collecting/main.ts with a --site argument (all, wikicfp, easychair, cfpwiki).
- Crawl listings and collect detail-page URLs.
- Fetch detail pages and parse conference metadata.
- Merge postings and write the consolidated DB.
scripts/conference-collecting/main.ts: CLI entrypoint (--site)scripts/conference-collecting/collectors.ts: source-specific scrapersscripts/conference-collecting/schema.ts: record/DB shapesscripts/conference-collecting/storage.ts: load/saveconference-postings.json
conference-postings.json(repo root): consolidated output.storage/(repo root): Crawlee internal crawl state (KV stores + request queues). Deleting it resets crawl progress/state.
Prerequisites:
- Node.js (recommended recent LTS)
- pnpm (recommended) or a compatible package manager
Install dependencies:
pnpm installRun the collectors (examples):
- Collect all configured sources:
pnpm run collect:all- Collect only WikiCFP:
pnpm run collect:wikicfp- Collect only EasyChair:
pnpm run collect:easychair- Collect only cfp.wiki:
pnpm run collect:cfpwikiThe collectors write the consolidated database to conference-postings.json at the repository root.
Collection-source configuration can be found in scripts/conference-collecting/collectors.ts:
After changes, run pnpm run collect:* to update conference-postings.json (the project uses tsx, so no separate build step is required).
Contributions welcome — open issues or pull requests for new collector sources, bug fixes, or improvements to normalization/merging logic.