GSA eLibrary Contractor Scraper avatar

GSA eLibrary Contractor Scraper

Pricing

Pay per event

Go to Apify Store
GSA eLibrary Contractor Scraper

GSA eLibrary Contractor Scraper

Extract GSA eLibrary contractor profiles with contract numbers, schedules, SINs, SAM UEI, contacts, websites, and addresses.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Extract GSA eLibrary contractor profiles by keyword or URL.

Use this actor to build GovCon lead lists, enrich SAM.gov workflows, monitor schedule-holder markets, and export contractor contact data from public GSA eLibrary pages.

What does GSA eLibrary Contractor Scraper do?

GSA eLibrary Contractor Scraper searches the public GSA eLibrary contractor directory and saves structured contractor records.

It can start from keywords such as cybersecurity, cloud computing, or janitorial, or from direct GSA eLibrary search and contractor URLs.

For each contractor it can collect contract numbers, schedule information, SINs, address, phone, email, website, SAM UEI, NAICS, socioeconomic categories, contract dates, and source URLs.

Who is it for?

  • ๐Ÿง‘โ€๐Ÿ’ผ GovCon business development teams building subcontractor and partner lists.
  • ๐Ÿ“Š Procurement analysts mapping GSA schedule holder markets.
  • ๐Ÿงพ Capture managers researching competitors by service keyword or SIN.
  • ๐Ÿง  Lead generation agencies enriching government contractor databases.
  • ๐Ÿ” RevOps teams scheduling repeat contractor refreshes in Apify.

Why use it?

GSA eLibrary pages are public but hard to export at scale.

This actor turns those pages into clean JSON, CSV, Excel, API, webhook, and integration-ready datasets.

You can run it once for quick research or schedule it to monitor contractor markets over time.

How it works

  1. Provide one or more search keywords or GSA eLibrary URLs.
  2. The actor requests public searchResults.do pages.
  3. It parses contractor detail links.
  4. If detail enrichment is enabled, it fetches contractorInfo.do pages.
  5. It saves one dataset row per contractor.

Input options

FieldTypeDescription
searchTextsstring[]Keywords to search in GSA eLibrary.
startUrlsURL[]Direct GSA eLibrary search or contractor URLs.
maxItemsnumberMaximum contractor records to save.
enrichDetailsbooleanFetch contractor profile pages for contacts and SINs.
requestDelayMsnumberPolite delay between detail requests.

Example input

{
"searchTexts": ["cybersecurity"],
"maxItems": 25,
"enrichDetails": true,
"requestDelayMs": 250
}

Output data

FieldDescription
querySearch keyword that produced the record.
contractorNameContractor name from GSA eLibrary.
contractNumberGSA contract number.
scheduleSchedule code such as MAS.
scheduleTitleSchedule title when available.
sinComma-separated SIN list.
sinTitlesSIN descriptions.
addressContractor address.
phoneContractor phone.
emailContractor email.
websiteContractor website.
samUeiSAM Unique Entity ID.
naicsNAICS code.
socioEconomicSocioeconomic designations.
currentOptionPeriodEndDateCurrent option period end date.
ultimateContractEndDateUltimate contract end date.
governmentPocEmailGovernment POC email when shown.
termsAndConditionsUrlPrice list / terms URL when shown.
detailUrlGSA eLibrary contractor profile URL.
sourceUrlSearch URL or source URL.
scrapedAtISO timestamp.

Example output

{
"query": "cybersecurity",
"contractorName": "ADVANCED CYBERSECURITY EXPERTS LLC",
"contractNumber": "47QTCA24D0082",
"schedule": "MAS",
"sin": "518210C, 54151HACS, 54151S, OLM",
"address": "309 BRIARWOOD DR, LEANDER, TX 78641-8077",
"phone": "254-458-0014",
"email": "matt@example.com",
"samUei": "J866DLWCTSG8",
"detailUrl": "https://www.gsaelibrary.gsa.gov/ElibMain/contractorInfo.do?...",
"scrapedAt": "2026-06-24T04:08:14.321Z"
}

How much does it cost to scrape GSA eLibrary contractors?

This actor uses pay-per-event pricing.

You pay a small start fee plus a per-contractor record fee.

Use maxItems to control cost during testing.

Start with 10โ€“25 contractors, inspect the dataset, then scale up.

Search tips

  • Use procurement nouns such as cybersecurity, cloud, logistics, janitorial, construction, or IT services.
  • Use exact product or service phrases when researching a narrow market.
  • Keep enrichDetails enabled when you need contacts, SINs, SAM UEI, and NAICS.
  • Increase requestDelayMs for very large runs.
  • Use direct GSA eLibrary URLs when you already have a filtered search page.

Integrations

Send contractor records to:

  • Google Sheets for quick lead review.
  • Airtable for GovCon pipeline tracking.
  • Salesforce or HubSpot through Apify integrations.
  • Snowflake, BigQuery, or S3 for procurement intelligence.
  • Webhooks for automated enrichment workflows.

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/gsa-elibrary-contractor-scraper').call({
searchTexts: ['cybersecurity'],
maxItems: 25,
enrichDetails: true
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/gsa-elibrary-contractor-scraper').call(run_input={
'searchTexts': ['cybersecurity'],
'maxItems': 25,
'enrichDetails': True,
})
print(run['defaultDatasetId'])

cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~gsa-elibrary-contractor-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchTexts":["cybersecurity"],"maxItems":25,"enrichDetails":true}'

MCP usage

Use the Apify MCP server with Claude Code or Claude Desktop.

MCP URL:

https://mcp.apify.com/?tools=automation-lab/gsa-elibrary-contractor-scraper

Claude Code setup:

$claude mcp add apify-gsa-elibrary https://mcp.apify.com/?tools=automation-lab/gsa-elibrary-contractor-scraper

Claude Desktop JSON config:

{
"mcpServers": {
"apify-gsa-elibrary": {
"url": "https://mcp.apify.com/?tools=automation-lab/gsa-elibrary-contractor-scraper"
}
}
}

Example prompts:

  • "Find 50 GSA eLibrary cybersecurity contractors and summarize the top SINs."
  • "Scrape cloud computing schedule holders and export contractor emails."
  • "Monitor GSA eLibrary logistics contractors weekly and alert me about new records."

Scheduling

Create an Apify schedule to refresh a keyword every week or month.

For repeat market monitoring, use stable inputs and compare dataset exports over time.

Data quality notes

The actor extracts data as published by GSA eLibrary.

Some contractors may omit websites, emails, or optional metadata.

Use detailUrl to verify any record in the public source.

Legality

This actor reads public GSA eLibrary pages.

You are responsible for using the data lawfully, respecting applicable terms, and complying with privacy, procurement, and outreach rules.

Do not use extracted contacts for unlawful spam or prohibited solicitation.

FAQ

Can I scrape by SIN?

Use a GSA eLibrary URL that already reflects your SIN/category filtering, or search by a SIN-related service keyword.

Does it require a GSA account?

No. The actor reads public GSA eLibrary search and contractor detail pages.

Troubleshooting

Why did I get fewer contractors than expected?

The keyword may only show a small set of contractor links on the public result page. Try a broader keyword or direct filtered GSA eLibrary URL.

Why are some contact fields missing?

GSA eLibrary pages do not always publish every optional field. The actor leaves unavailable values empty rather than inventing data.

Should I disable detail enrichment?

Disable it only when you need fast search-level records. Keep it enabled for address, email, website, SAM UEI, NAICS, and SIN enrichment.

Changelog

  • Initial version: keyword and URL-based GSA eLibrary contractor extraction with detail enrichment.

Support

Open an Apify issue if a GSA eLibrary page changes or if you need additional fields from the public contractor profile.