OMNIA Partners Contracts Scraper
Pricing
from $3.00 / 1,000 contracts
OMNIA Partners Contracts Scraper
Export OMNIA Partners, NCPA and US Communities cooperative contracts to CSV, Excel or JSON: suppliers, lead agencies, expiration dates, categories and contract PDFs. Filter by program, industry or category and find contracts expiring soon (upcoming rebids).
Pricing
from $3.00 / 1,000 contracts
Rating
0.0
(0)
Developer
Alexei Pannicov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
OMNIA Partners, NCPA & US Communities cooperative contracts — export the full OMNIA Partners contract registry to CSV, Excel or JSON: suppliers, lead agencies, terms and expiration dates, categories, state adoptions and direct links to contract documents (PDF). Filter by program, industry or category and find contracts expiring soon — the upcoming rebids.
The Actor reads the registry from omniapartners.com — an OMNIA Partners contract search API alternative — and enriches every contract with supplier data.
It covers every program listed in the OMNIA contract search — OMNIA Public Sector, OMNIA Private Sector, NCPA, US Communities and more — including private-sector contracts.
What this Actor does
- Uses OMNIA's own search API — reads the same JSON the website uses, so it is fast, needs no browser, proxy or login, and returns clean, typed data
- Full registry, not just the first page — pages through all results and reconciles the collected count with the total reported by the API
- Contract documents — every document comes with a direct
download_urlto the PDF - Supplier enrichment — each contract carries the supplier's website, industry, active contract count, first contract date and parent company
- Rich filtering — full-text search, 8 server-side filters (industry,
sector, cooperative, vertical, award structure, subcategory, lead agency,
state) and 4 client-side filters (category, new only, state-adopted only,
expiring within N days), plus
maxItems - Apify platform advantages — run on a schedule, trigger via API, connect to integrations, and monitor runs from the Apify Console
Who is it for
- Public-sector procurement teams checking which cooperative contracts already cover a need before running their own RFP
- Supplier sales and business-development teams tracking competitors, lead agencies and contracts coming up for expiration
- Market-intelligence analysts and consultants who need an up-to-date, machine-readable copy of the OMNIA contract registry
Use cases
NCPA contract list
Every contract awarded through NCPA (National Cooperative Purchasing Alliance), with lead agency, supplier, expiration date and contract PDFs.
{ "sourcingEntities": ["NCPA"] }
US Communities contracts
US Communities is now part of OMNIA Partners — its contracts sit in the same registry and are selected by program.
{ "sourcingEntities": ["US Communities"] }
Expiring cooperative contracts → upcoming rebids
Contracts that end in the next N days are the ones about to be re-solicited. Suppliers use this to prepare for the rebid or to reach agencies before the incumbent's contract runs out.
{ "expiresWithinDays": 90 }
K-12 and higher-education contracts
School districts, colleges and universities buy through cooperative contracts heavily. Filter by the industry the contract is open to:
{ "industries": ["k12"] }
⚡ Ready-made tasks
Start from a preconfigured task — open it, adjust the input if needed, and click Start:
- NCPA contracts list
- US Communities contracts
- OMNIA contracts expiring in the next 90 days
- New OMNIA Partners cooperative contracts
- K-12 school contracts
- Higher education contracts
- IT & telecom contracts
- Construction, architecture & engineering contracts
🚀 How to use
- Open the Actor's Input tab. Leave everything empty to get the whole registry, or set a search query and filters.
- Optionally set
maxItemsfor a cheap test run. - Click Start.
- Open the Output tab when the run finishes, or fetch the dataset via the API in JSON, CSV, Excel and other formats.
Input
All input fields are optional. Empty fields mean "no restriction". Within a list field, values are combined with OR (a contract matches if it has at least one of them); different fields are combined with AND.
| Field | Type | Where applied | Description |
|---|---|---|---|
query | string | server | Full-text search over contract title and description |
industries | string[] | server | government, higher_ed, k12, nonprofit, business_commercial, private_equity, real_estate |
contractSectors | string[] | server | Public, Private |
sourcingEntities | string[] | server | Cooperative / program: OMNIA Public Sector, OMNIA Private Sector, NCPA, US Communities, BA, Prime Advantage, National IPA, Premier |
verticals | string[] | server | e.g. IT & Telecom, Furniture, Food and Nutrition (dropdown) |
awardStructures | string[] | server | Single-Award, Multi-Award |
subcategories | string[] | server | Exact, case-sensitive match, e.g. Software |
leadAgencies | string[] | server | Exact, case-sensitive match, e.g. Region 4 Education Service Center |
stateAdoptedStates | string[] | server | Two-letter state codes, e.g. UT |
categories | string[] | Actor | One or more of 24 OMNIA categories (dropdown) |
newOnly | boolean | Actor | Keep only contracts OMNIA marks as new. false means no restriction, not "old only" |
stateAdoptedOnly | boolean | Actor | Keep only contracts adopted by at least one state |
expiresWithinDays | integer ≥ 0 | Actor | Keep only contracts expiring within N days (0 = today or already expired) |
maxItems | integer ≥ 1 | last | Caps the number of delivered contracts, applied after all filters |
Server-side filters are applied by the OMNIA API before paging, so fewer requests are made. Actor-side filters are applied after all pages are collected, because the API does not support them reliably.
Output
Each dataset item is one contract. Example (documents shortened):
{"id": "150457","contract_number": "05-80","supplier_id": "5700","salesforce_id": "0014M00002LlCHKQA3","supplier": "iPARQ","website_display_name": "iParq","contract_title": "Parking Enforcement Software and Equipment","solicitation_number": "S1039","lead_agency": "Region 14 Education Service Center","lead_agency_id": "0016100000O6uSYAAZ","contract_sector": "Public","cooperative_scope": "NCPA","industries": ["k12", "higher_ed", "government", "nonprofit"],"categories": ["Information Technology Services"],"renewed_until": "2026-11-30","final_expiration": "2026-11-30","initial_term": "2022-09-01","days_to_expiration": 68,"current_status": "Active","is_new": false,"is_state_adopted": false,"state_adopted_states": [],"state_adoption_type": null,"has_pricing_doc": true,"has_executive_summary": true,"document_types": ["Evaluation & Award Documents", "Master Agreement Documents"],"document_count": 8,"documents": [{"filename": "iParq_Award_Letter.pdf","file_group": "Master Agreement Documents","file_type": "","document_title": "Contract Award Letter","blob_path": "S1039/150457/Master_Agreement_Documents/iParq_Award_Letter.pdf","hidden": false,"download_url": "https://www.omniapartners.com/api/document-download?contract=150457&filename=iParq_Award_Letter.pdf"}],"contract_url": "https://www.omniapartners.com/suppliers/iparq/contracts/05-80","supplier_url": "https://www.omniapartners.com/suppliers/iparq","supplier_website": "www.iparq.com","supplier_industry": "Consumer Services","supplier_active_contract_count": 2,"supplier_first_contract_date": "2022-09-01","supplier_parent_name": null}
Key fields:
contract_url— the public contract page;nullfor Private-sector contracts, which have no public page on omniapartners.com.documents[].download_url— direct PDF link;nullif the document has no file name.days_to_expiration— whole days (UTC) from the run date tofinal_expiration; negative for expired contracts,nullif the date is missing or malformed.supplier_*— supplier enrichment;nullwhen the supplier could not be matched.
The Output tab shows an overview table with the most useful columns; the full item is available in every export format.
Input examples
Private-sector contracts for private equity:
{"industries": ["private_equity"],"contractSectors": ["Private"]}
NCPA contracts expiring in the next 180 days:
{"sourcingEntities": ["NCPA"],"expiresWithinDays": 180}
Full-text search plus a category, expiring within a year:
{"query": "office chairs","categories": ["Furniture & Furnishings"],"expiresWithinDays": 365}
A quick test run over the whole registry:
{"maxItems": 50}
How it works
- The Actor calls OMNIA's public search API (
POST /api/search) — the same endpoint the website uses — with your query and server-side filters. No browser is involved. - It pages through all results, collecting contracts and suppliers, and
stops when the collected count matches the total (
found) reported by the API or when a page brings no new contracts. Network errors and 5xx responses are retried with backoff. - Each contract is normalized and enriched with its supplier's data; document download links are built.
- Actor-side filters are applied, then
maxItems. - Contracts are written to the dataset.
Pricing
This Actor uses the Pay Per Event pricing model — you are not charged for compute time.
- Each contract written to the dataset is charged exactly one
new-itemevent, so a run costs exactly as many events as the number of contracts it delivers. - The exact price per event is listed on the Pricing tab of the Actor page.
- If you set a maximum cost per run limit in your Apify run settings, the Actor stops delivering contracts once that budget is reached instead of handing out contracts it can no longer charge for.
Limitations & notes
- Private-sector contracts have
contract_url: null— OMNIA publishes no public page for them. subcategories,leadAgenciesandstateAdoptedStatesrequire an exact, case-sensitive match; there is no autocomplete, so a typo returns nothing (the Actor logsFilter matched no contracts). Blank values are ignored.- The OMNIA API silently ignores filter values it does not recognize and returns the whole registry instead. When server-side filters don't narrow the result, the Actor logs a warning so you can spot it.
- With a text
query, the API'sfoundis only an estimate and is usually a bit higher than the number of contracts it actually returns; the Actor collects every unique contract the API returns. final_expirationis returned exactly as published by the source, including occasional typos (e.g.3031-07-31); the Actor does not "correct" source data.- The registry size changes over time; as of September 2026 it holds about 860 contracts from about 640 suppliers.
Legality
This Actor collects only contract data that OMNIA Partners publishes openly on omniapartners.com; it does not extract private user data. You are responsible for using the results in line with the source website's terms of service and the laws that apply to you. If the data you collect includes personal data, it may be protected by the GDPR or other regulations — consult your lawyers if you are unsure whether your use is legitimate.
❓ FAQ
Where can I find a list of NCPA contracts?
NCPA contracts are part of the OMNIA Partners registry. Run the Actor with
sourcingEntities: ["NCPA"] (or open the
NCPA contracts task) and export the
dataset to Excel or CSV.
Is US Communities part of OMNIA?
Yes — US Communities contracts are published in the OMNIA Partners registry.
Select them with sourcingEntities: ["US Communities"].
Why is my dataset empty?
Most often a string filter (subcategories, leadAgencies,
stateAdoptedStates) or a combination of filters matches nothing — these
require an exact, case-sensitive value. The run log shows a
Filter matched no contracts warning with the values you passed. Remember
that different fields are combined with AND.
Why do some contracts have no contract_url?
Private-sector contracts have no public page on omniapartners.com, so the
Actor returns null instead of a broken link.
How do I get the contract PDFs?
Use documents[].download_url — it is a direct download link for each
document.
How much does a full run cost?
One new-item event per delivered contract, so the whole registry costs
roughly its size in events (about 860 as of September 2026). Use filters or
maxItems to pay only for what you need.
Can I run this on a schedule?
Yes. Use Apify Schedules, for example with expiresWithinDays to get a
weekly list of contracts coming up for expiration.
📝 Changelog
See the Changelog tab (CHANGELOG.md) for what changed between releases.
🔗 Related procurement Actors
- Sourcewell awarded contracts & vendors — the Sourcewell cooperative contract registry with awarded suppliers, categories 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.
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. Use expiresWithinDays here to see
which contracts are ending, then watch for the rebid with the Bonfire
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.
Development
npm installnpm run buildnpm start # run the compiled Actornpm run start:dev # run from TypeScript sources without buildingnpm test # build and run the test suiteapify run # run locally with the Apify CLI
Internal developer documentation (in Russian) lives in the docs/ folder of
the source repository.