US Public Library Leads Scraper (IMLS Directory) avatar

US Public Library Leads Scraper (IMLS Directory)

Pricing

from $6.00 / 1,000 library system leads

Go to Apify Store
US Public Library Leads Scraper (IMLS Directory)

US Public Library Leads Scraper (IMLS Directory)

Scrape every US public library from the official IMLS Public Libraries Survey: ~9,000 library systems + ~17,000 branch outlets with phone, full address, population served, budget, collections, programs, computers/Wi-Fi & a lead score. Filter by state, size & type. B2B leads + new-library monitoring.

Pricing

from $6.00 / 1,000 library system leads

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Extract every public library in the United States — city, county, district, multi-jurisdictional, tribal and non-profit library systems plus all of their physical branches — straight from the official IMLS Public Libraries Survey (PLS). Each library comes with its phone, full address, county and geo, plus population served, operating budget, staffing, collection size, visits, circulation, programs, public computers and Wi‑Fi, and a derived lead score on every record.

No login, no cookies, no browser, no API key — fast extraction of the official IMLS data files.

Why this library scraper?

Other "library" tools on the market scrape library catalogs (books) or a single library's website. This actor ships the richest US public-library lead & intelligence dataset in the category — built for sales and market research, not just a name and address:

DataTypical scrapersThis actor
Library / branch name
Phonepartial✅ (~99%)
Full address + county + geopartial
Population served + size tier
Operating budget (revenue & expenditures)
Staffing (FTE, MLS librarians)
Collection (books, e‑books, audio, video)
Visits, circulation, registered users
Programs & attendance
Public computers & Wi‑Fi sessions
Governance / legal basis
Branch-level outlets (address, sq ft, hours, geo)
Lead score (0–100) + lead signals
New-library monitoring

There are ~9,000 public library systems and ~17,000 individual outlets in the US — every one a buyer of books and e‑content, library software, furniture, RFID/self‑checkout, computers and Wi‑Fi, makerspace equipment, facilities services and professional development.

Use cases

  • B2B lead generation — public libraries are recurring, grant-funded buyers: book & e‑book publishers and platforms (OverDrive/Libby, Hoopla, cloudLibrary), integrated library systems (ILS/automation), RFID & self‑checkout, public-access computers & broadband, furniture & shelving, makerspace/STEM kits, security, HVAC/facilities, and library design firms. Score libraries by populationServed, totalRevenue and visits and reach the phone directly.
  • Territory & account planning — pull every library system in a state, rank by budget and population, and build a clean, prioritized call list for reps.
  • Market & sizing analysis — analyze budgets, collection mix (print vs e‑book), staffing, program volume and technology by state, county or locale (city/suburb/town/rural).
  • Grant & program targeting — find large, high-traffic systems (or under-resourced rural ones) for partnerships, sponsorships and grant programs.
  • Site & location intelligence — switch to Outlets to get every physical branch with address, latitude/longitude, square footage and open hours.
  • Monitoring — schedule recurring runs with monitorMode to capture only new libraries as the survey refreshes.

How to use

  1. Sign up for Apify — the free plan is enough to try this actor.
  2. Open the US Public Library Leads Scraper, choose states, a record type (library systems / outlets / both) and filters (size, budget, governance, locale), then click Start.
  3. Watch results stream into the dataset table.
  4. Export as JSON, CSV, Excel, XML, or HTML — or pull results programmatically via the Apify API.

Input

{
"recordType": "libraries",
"states": ["TX"],
"minPopulationServed": 10000,
"withPhoneOnly": true,
"sortBy": "leadScore",
"maxResults": 500
}
  • recordType (default libraries)libraries (rich system-level leads), outlets (branch-level location records), or both.
  • states — two-letter USPS codes (TX, CA, NY). Leave empty to sweep all states & territories (bounded by maxResults).
  • counties / cities / zipCodes / nameQuery — filter by county, city, ZIP prefix, or library name text.
  • localeCategories / beaRegions / legalBasis — filter by urbanicity (City/Suburb/Town/Rural), BEA region, or governance (municipal, county, district, tribal, non‑profit…).
  • minPopulationServed / maxPopulationServed / minTotalRevenue / minVisits / minTotalStaff / minBranches — target by size, budget and activity.
  • outletTypes / minSquareFeet — filter outlets by type (central/branch/bookmobile) and floor area.
  • multiOutletOnly / withPhoneOnly / excludeTemporarilyClosed / minLeadScore — high-value segment toggles.
  • sortByleadScore (recommended), populationHigh, revenueHigh, visitsHigh, squareFeetHigh, name, state, or source.
  • maxResults / maxResultsPerState / deduplicate / includeRawFields — output controls.
  • monitorMode / monitorKey — only emit new records across scheduled runs.

Output

One record per library system (recordType: "library"):

{
"recordType": "library",
"fscsKey": "TX0001",
"libraryName": "Austin Public Library",
"address": "710 W Cesar Chavez St",
"city": "Austin",
"state": "TX",
"zip": "78701",
"county": "Travis",
"fullAddress": "710 W Cesar Chavez St, Austin, TX, 78701",
"latitude": 30.2705,
"longitude": -97.7501,
"locale": "City — Large",
"localeCategory": "City",
"phone": "(512) 974-7400",
"hasPhone": true,
"legalBasis": "Municipal government",
"interlibraryRelation": "Member of a federation or cooperative",
"beaRegion": "Southwest",
"populationServed": 961855,
"populationCategory": "Very large (100k+)",
"centralLibraries": 1,
"branchLibraries": 20,
"totalOutlets": 21,
"isMultiOutlet": true,
"totalStaff": 470.5,
"librariansMLS": 120,
"totalRevenue": 62000000,
"localRevenue": 60000000,
"totalOperatingExpenditures": 58000000,
"collectionExpenditures": 6000000,
"bookVolumes": 1300000,
"ebooks": 450000,
"totalCollections": 2100000,
"visits": 2500000,
"registeredUsers": 600000,
"totalCirculation": 6000000,
"totalPrograms": 5000,
"totalProgramAttendance": 200000,
"publicComputers": 400,
"wifiSessions": 900000,
"fiscalYear": "FY2023",
"leadScore": 100,
"leadSignals": ["Very large service area (500k+)", "Very high budget ($10M+)", "Very high foot traffic", "Large multi-branch system", "High program volume", "Heavy Wi-Fi usage", "Strong e-book collection", "Has phone"],
"dataSource": "IMLS Public Libraries Survey",
"scrapedAt": "2026-06-21T12:00:00.000Z"
}

Outlet records (recordType: "outlet") carry the branch name & type, full address, phone, latitude/longitude, square footage, annual open hours and weeks open. Every record also carries sourceFields — the complete raw IMLS survey row — so no data is lost (turn off with includeRawFields: false).

Automate & schedule

Run this actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/us-library-leads-scraper').call({
states: ['CA'],
recordType: 'libraries',
minPopulationServed: 10000,
withPhoneOnly: true,
sortBy: 'leadScore',
maxResults: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} library leads`);

Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

  • Make — multi-step automation scenarios.
  • Zapier — push new library leads straight into your CRM.
  • Slack — get notified when a monitored search finds new libraries.
  • Google Drive / Sheets — auto-export every run to a spreadsheet.
  • Airbyte — pipe results into your data warehouse.
  • GitHub — trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find every large public library system in California with a phone number and a budget over $1M" and let it run this scraper for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
  • Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

More scrapers from scrapesage

Build a complete US institutional & B2B lead-gen stack from official open-data sources:

Tips

  • Best leads first: keep recordType on libraries and sortBy on leadScore — large, well-funded, high-traffic systems with a phone rank highest.
  • Account sizing: pull the full system record (budget, staffing, collection, programs, technology) to qualify and segment accounts before you call.
  • Site lists: switch to outlets to get every physical branch address with geo, square footage and hours — ideal for field sales, mailers or mapping.
  • National sweeps: leave states empty, set a maxResults cap, and use maxResultsPerState for an even spread across states.
  • Proxies: not needed — the official IMLS data file is downloaded directly. Leave the proxy off for the fastest run.

FAQ

Where does the data come from? The official US IMLS Public Libraries Survey (PLS) public-use data files (Administrative Entity + Outlet), published annually by the Institute of Museum and Library Services. No API key or login is required.

How fresh is the data? The actor auto-resolves the latest fiscal year published on the IMLS website (currently FY2023). IMLS releases a new survey each year.

Do records include phone numbers? Yes — ~99% of library systems and outlets carry a phone number. Fields are null only when IMLS doesn't publish them, never because the scraper skipped them.

Do they include emails? The IMLS survey publishes phone and full mailing address, not email. Pair this with the Website Contact Scraper to enrich a library's website for emails and socials.

Can I get only large libraries? Yes — use minPopulationServed, minTotalRevenue, minVisits or minBranches, and sort by leadScore or revenueHigh.

Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.

How do I monitor new libraries automatically? Turn on monitorMode, give each watch a monitorKey, and create a Schedule. Each run emits only records that are new since the last run.

Is this legal? This actor collects publicly available US government open data only. You are responsible for using the data in compliance with applicable laws and IMLS's terms.

Need help?

Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.