Sourcewell Contract Scraper
Pricing
from $5.00 / 1,000 new items
Sourcewell Contract Scraper
Sourcewell contract search & awarded vendors list: export all ~1,060 Sourcewell cooperative purchasing contracts to CSV, Excel or JSON β suppliers, categories, descriptions and expiration dates. Filter by category or find contracts expiring in the next N days (upcoming rebids).
Pricing
from $5.00 / 1,000 new items
Rating
0.0
(0)
Developer
Alexei Pannicov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
Sourcewell contract search & awarded vendors list β export every Sourcewell cooperative purchasing contract to CSV, Excel or JSON: ~1,060 contracts with awarded suppliers, descriptions, expiration dates and categories. Filter by category or find contracts expiring soon β the upcoming rebids.
The Actor collects the public contract registry from sourcewell-mn.gov and delivers it as a structured Apify Dataset β a Sourcewell contract search API alternative.
It covers the contract registry, not each contract's detail page β so no contract documents, supplier contacts, or full products & services list (see Roadmap).
What this Actor does
- Official spreadsheet feed as the primary source β faster and more
reliable than paging through HTML: one request returns all ~1,060 contracts
with accurate
supplier/description/solicitationTitle/maturityDate - Category enrichment β categories only exist on the HTML listing, so the
Actor crawls it and merges categories into the feed rows by
contractNumber - Category filter and limits β export a single category or cap the dataset size for a quick test run
- Expiring contracts filter β
expiresWithinDayskeeps only contracts that expire in the next N days, so you see upcoming rebids months ahead - Apify platform advantages β run on a schedule, trigger via API, connect to integrations, and monitor runs from the Apify Console
Who is it for
- Procurement and purchasing teams checking what's already covered by Sourcewell cooperative contracts before running their own RFP
- Suppliers and bid consultants tracking competitor contracts and categories on Sourcewell
- Sales and lead-gen teams building a list of active Sourcewell suppliers by category
- Market-intelligence and compliance tools that need an up-to-date, machine-readable copy of the contract registry
Use cases
Find Sourcewell awarded vendors by category
Get the list of approved vendors (awarded suppliers) on Sourcewell contracts in one category β e.g. everyone awarded under Public Safety β with contract numbers and expiration dates. Export to Excel or CSV and filter it like any spreadsheet.
{ "category": "Public Safety" }
Track contracts expiring in the next 90 or 365 days (upcoming rebids)
A contract that expires soon is about to be re-solicited. Suppliers use this to prepare for the rebid or to approach agencies before the incumbent's contract ends; procurement teams use it to plan renewals.
{ "expiresWithinDays": 90 }
Check if a cooperative contract already covers your purchase (piggyback)
Before running your own RFP, search the registry for a Sourcewell contract
you can piggyback on β filter by category, then search description and
solicitationTitle in the exported spreadsheet.
β‘ Ready-made tasks
Start from a preconfigured task β open it, adjust the input if needed, and click Start:
- Sourcewell contracts expiring in the next 12 months
- Sourcewell contracts expiring in the next 90 days
- Sourcewell awarded vendors list (all contracts)
- Sourcewell public safety contracts
- Sourcewell construction contracts
- Sourcewell fleet & vehicle contracts
- Sourcewell facilities & MRO contracts
- Sourcewell office & technology contracts
π How to use
- Open the Actor's Input tab and optionally set
category,expiresWithinDaysormaxItems. - Click Start. The Actor downloads the official contract-list spreadsheet feed and parses every contract row.
- It then crawls the
/contract-searchlisting page by page to collect categories for eachcontractNumber. - It merges both sources, optionally filters by
categoryandexpiresWithinDays, and trims tomaxItems. - The result is written to the run's Dataset β open the Output tab or fetch it via the API.
A full run takes a few minutes and returns the complete registry; no proxy, login, or configuration is required.
Input
All input fields are optional β see the Input tab for the full schema:
| Field | Type | Description |
|---|---|---|
category | string | One of the site's 14 top-level categories (dropdown); if omitted, contracts from all categories are returned |
expiresWithinDays | integer β₯ 1 | Keep only contracts whose maturityDate falls within the next N days (upcoming rebids); already expired and undated contracts are excluded |
maxItems | integer | Maximum number of contracts in the resulting dataset β handy for a cheap test run; applied after the filters |
Output
You can download the dataset in various formats such as JSON, CSV, Excel, or HTML via the Output tab or the API.
[{"contractNumber": "030425-CEN","supplier": "22nd Century Technologies","description": "Public safety and law enforcement software solutions","solicitationTitle": "Public Safety Software","maturityDate": "2029-07-17","categories": ["Office & Technology", "Public Safety"],"detailUrl": "https://www.sourcewell-mn.gov/cooperative-purchasing/030425-CEN"}]
| Field | Type | Description |
|---|---|---|
contractNumber | string | Contract number (stable key, unique per contract) |
supplier | string | Supplier name |
description | string | Short contract description |
solicitationTitle | string | Solicitation/RFP title |
maturityDate | string | Contract expiration date (YYYY-MM-DD) |
categories | string[] | Contract categories β zero or more of the 14 top-level categories |
detailUrl | string | Link to the contract's page on the Sourcewell site |
How it works
The Actor combines two public sources on the official Sourcewell site:
- The official contract-list spreadsheet feed β one request returns every
contract with
contractNumber,supplier,description,solicitationTitleandmaturityDate. This feed has no categories. - The
/contract-searchHTML listing β crawled page by page and used only to collectcategoriespercontractNumber.
Both sources are merged by contractNumber, optionally filtered by
category and expiresWithinDays, trimmed to maxItems, and written to the
dataset.
Pricing
This Actor uses Pay Per Event pricing, with no charge for compute time
itself. Each contract written to the dataset is charged one new-item
event, so a run costs exactly as many events as the number of contracts it
delivers. See the Pricing tab on this Actor's page for the exact price
per event.
If you cap a run with Apify's maximum cost per run setting, the Actor stops delivering once that budget is reached instead of writing contracts it cannot charge for. The dataset then holds exactly what you paid for.
Limitations & notes
- A few contracts have an empty
categoriesarray: they are present in the contract feed but not in the HTML listing the categories come from (1,056 of 1,063 contracts had categories in testing). expiresWithinDayscounts whole days from the run date (UTC) tomaturityDate, inclusive of both ends.maxItemstrims the final list after both sources are merged, so it caps what you are charged for but doesn't make the run itself much faster.- Contract documents, supplier contacts, supplier websites and the full products & services list live behind each contract's detail page and are not collected by this Actor yet β see the Roadmap below.
πΊ Roadmap
Planned next, in order:
- Contract detail crawling β an optional, higher-priced mode that opens each contract's page to extract contract documents, supplier contacts and website, and the full products & services list.
- Wider source coverage β evaluating whether to also include the AβZ supplier listing and the construction contractors (IDIQ) registry, which sit outside the main contract search.
Need one of these sooner, or a field that isn't in the output yet? Open an issue on the Actor's Issues tab β requests with a concrete use case get prioritized.
Legality
Our Actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our Actors, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.
β FAQ
How do I get a list of Sourcewell approved vendors?
Run the Actor with no input (or pick a category) and export the dataset to
Excel or CSV. Every row is an awarded contract with its supplier, so the
supplier column is the awarded vendors list β or start from the
awarded vendors task.
Which Sourcewell contracts expire soon?
Set expiresWithinDays, e.g. 90 for the next quarter or 365 for the next
year. The dataset then holds only contracts coming up for renewal, with their
suppliers and categories.
Does the dataset include every Sourcewell contract, or only the ones
matching my category filter?
The Actor always downloads the full contract feed first; category only
filters the final output, so switching categories between runs never requires
a different crawl of the contract list itself.
Where do categories come from?
From the /contract-search HTML listing, matched to feed rows by
contractNumber β the spreadsheet feed itself has no categories. A contract
that is in the feed but missing from the HTML listing comes back with an
empty categories array.
How often is the underlying data updated? Sourcewell refreshes the contract feed on its own schedule, typically daily. The Actor always fetches the current version on each run.
Can I get supplier contacts, contract documents, or the full products & services list? Not yet β that data lives on each contract's detail page and is on the roadmap above.
Can I run this on a schedule?
Yes. Use Apify's Schedules to run it daily or weekly β for example with
expiresWithinDays for a weekly list of contracts coming up for renewal. Pair
it with maxItems or the maximum cost per run setting to keep recurring runs
predictable.
π Changelog
See the Changelog tab (CHANGELOG.md) for what changed between releases.
π Related procurement Actors
- OMNIA Partners / NCPA cooperative contracts β the same kind of registry for OMNIA Partners, NCPA and US Communities, with contract PDFs and an expiring-contracts filter. Use both to cover the largest US cooperative purchasing programs.
- Open government RFPs & bids on Bonfire β open solicitations from hundreds of US and Canadian agencies on Bonfire / Euna Procurement. Use it to catch the new bid once a contract runs out.
- PlanetBids government bids & RFPs β open bids, RFPs and award results from city, county, school and water district portals on PlanetBids (mostly California).
From expiring contract to new bid: when a cooperative contract is about to
expire, agencies that bought through it often run their own solicitation β
and many of them publish it on Bonfire or PlanetBids. Use expiresWithinDays
here to see which contracts in your category are ending, then watch for the rebid
with the Bonfire or PlanetBids scraper's keyword filter.
π Support & feedback
Bugs and feature requests β via the Issues tab on this Actor's page. For programmatic access, see the API tab.