Mohawk Medbuy APImohawkmedbuy.ca ↗
Search and retrieve Mohawk Medbuy sourcing opportunities — tenders, RFPs, RFQs, ACANs, and award notices — with full categories, descriptions, addenda, and documents.
What is the Mohawk Medbuy API?
The Mohawk Medbuy API provides two endpoints that expose the public procurement portal at mohawkmedbuy.ca, covering solicitations such as RFPs, RFQs, tenders, ACANs, and award notices. search_opportunities returns paginated summaries with status, closing dates, and days remaining, while get_opportunity delivers the full record for a single solicitation including procurement categories, plain-text description, addenda with revised closing dates, and attached document metadata.
curl -X GET 'https://api.parse.bot/scraper/b52bce86-6e53-4383-85db-5d15ee921be0/search_opportunities?status=open&page_size=3&query=RFP' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace mohawkmedbuy-ca-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walkthrough: Mohawk Medbuy sourcing opportunities — bounded, re-runnable."""
from parse_apis.mohawkmedbuy_ca_api import (
MohawkMedbuy,
OpportunityStatus,
OpportunityNotFound,
)
client = MohawkMedbuy()
# Browse open procurement opportunities, capped at 5 total items.
for summary in client.opportunity_summaries.search(
status=OpportunityStatus.OPEN, limit=5
):
print(summary.title, summary.closing_date, summary.days_left)
# Drill into the first open opportunity for full detail via typed navigation.
summary = client.opportunity_summaries.search(
status=OpportunityStatus.OPEN, limit=1
).first()
if summary is not None:
opp = summary.details()
print(opp.title, opp.status, opp.value_range)
for cat in opp.categories:
print(f" category: {cat.name} (code {cat.code}, level {cat.level})")
for link in opp.external_links:
print(f" link: {link.label} -> {link.url}")
# Point lookup by tender_id discovered from the previous search.
if summary is not None:
try:
detail = client.opportunities.get(tender_id=summary.tender_id)
print(detail.reference_number, detail.contract_type, detail.description[:120])
except OpportunityNotFound:
print(f"tender {summary.tender_id} no longer exists")
print("exercised: opportunity_summaries.search / details / opportunities.get")
Lists Mohawk Medbuy procurement opportunities, one row per solicitation, ordered by closing date (soonest first for open bids, most recent first otherwise). Optional free-text query matches the solicitation number and title; optional status narrows to open, closed, awarded or cancelled solicitations and omitting it returns every status. Paginated with page and page_size (page_size is clamped to 100); total is the portal's count of matching solicitations and has_more tells whether a further page exists. Each row carries tender_id, which get_opportunity accepts unchanged, and detail_url, the public detail page. Dates are Eastern Time in the form YYYY-MM-DDTHH:MM:SS (closing) or YYYY-MM-DD (posted); days_left is null for solicitations that are no longer open. One request per page.
| Param | Type | Description |
|---|---|---|
| page | integer | 1-based page number. |
| query | string | Free-text search across solicitation number and title, e.g. RFP or a reference number such as CW29837. Omitted = no text filter. |
| status | string | Solicitation status filter. Omitted = all statuses. |
| page_size | integer | Rows per page, maximum 100. |
{
"type": "object",
"fields": {
"page": "page number served",
"items": "array of solicitation summaries",
"query": "echo of the text filter, null when none",
"total": "portal's count of solicitations matching the filters",
"has_more": "true when a later page exists",
"page_size": "rows per page after clamping",
"items[].title": "solicitation name",
"status_filter": "echo of the status filter, null when none",
"items[].status": "portal status label: Open for Bidding, Closed, Awarded or Cancelled",
"items[].days_left": "integer days until closing; null once no longer open",
"items[].has_award": "true when an award notice has been published",
"items[].tender_id": "string id of the solicitation; input to get_opportunity",
"items[].detail_url": "public detail page of the solicitation",
"items[].posted_date": "publication date YYYY-MM-DD",
"items[].closing_date": "closing date-time, YYYY-MM-DDTHH:MM:SS in closing_timezone",
"items[].has_addendum": "true when at least one addendum exists",
"items[].bid_type_code": "portal bid type code: G goods, S services, GS goods and services, C construction",
"items[].addendum_count": "number of addenda issued",
"items[].closing_timezone": "timezone label for closing_date (ET)",
"items[].reference_number": "buyer's solicitation number as displayed (e.g. CW29837 - RFQ)",
"items[].electronic_bidding": "true when submissions are made electronically on the portal",
"items[].document_taker_count": "number of registered document takers"
},
"sample": {
"data": {
"page": 1,
"items": [
{
"title": "MMNCL PORTABLE PHARMACY COMPOUNDING TRAILER 2026 - ACAN - LHSC",
"status": "Open for Bidding",
"has_qna": false,
"days_left": 3,
"has_award": false,
"tender_id": "41779528",
"detail_url": "https://www.biddingo.com/medbuy/bid/1/41030408/41779528/verification",
"posted_date": "2026-09-04",
"closing_date": "2026-09-28T14:00:00",
"has_addendum": false,
"published_by": "Mohawk Medbuy",
"bid_type_code": "G",
"addendum_count": 0,
"closing_timezone": "ET",
"reference_number": "CW31456",
"electronic_bidding": false,
"document_taker_count": 0
}
],
"query": null,
"total": 22,
"has_more": true,
"page_size": 5,
"status_filter": "open"
},
"status": "success"
}
}About the Mohawk Medbuy API
What the API Returns
The search_opportunities endpoint returns a paginated list of Mohawk Medbuy solicitations. Each item in the items array carries the solicitation title, a status label (Open for Bidding, Closed, Awarded, or Cancelled), and a days_left integer while the bid is open. You can filter by free-text query (matching solicitation number or title, e.g. CW29837 or RFP) and by status. Results are ordered soonest-closing-first for open bids and most-recent-first for all others. Page size is configurable up to 100 rows, and has_more flags whether a subsequent page exists.
Opportunity Detail
get_opportunity accepts a tender_id exactly as returned by search_opportunities and fetches the complete public record. Unique to this endpoint are the categories array — each entry carries a code, name, description, and level indicating whether it is a top-level parent or a sub-category — the full plain-text description of the solicitation notice, and the addenda array. Each addendum includes its number, name, type, issued_date, any revised_closing_date, freeform text, inline links, and attached documents.
Documents and Links
The documents field on the detail record lists files attached directly to the solicitation, each annotated with name and an available_without_login boolean. Linked source documents hosted off-portal are captured through the detail_url field pointing to the canonical public page. Note that some document packages require a registered Mohawk Medbuy supplier account to download; available_without_login indicates which files are publicly accessible without that step.
Coverage Scope
The API reflects the public sourcing-opportunities board at mohawkmedbuy.ca. Solicitations span goods and services procurement for Mohawk Medbuy member healthcare organizations. The bid_type field on the detail record distinguishes Goods from Service solicitations. Historical closed and awarded notices remain queryable by passing status=closed or status=awarded to search_opportunities.
The Mohawk Medbuy API is a managed, monitored endpoint for mohawkmedbuy.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when mohawkmedbuy.ca changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official mohawkmedbuy.ca API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor newly opened RFPs and tenders on the Mohawk Medbuy portal by polling
search_opportunitieswithstatus=open. - Alert healthcare suppliers when a solicitation matching a keyword (e.g.
surgical gloves) moves from open to awarded. - Build a bid-tracking dashboard that surfaces
days_leftcountdowns for active solicitations. - Retrieve full procurement category codes and descriptions via
get_opportunityto classify and tag healthcare tenders by commodity type. - Aggregate addenda across multiple solicitations to detect revised closing dates before a submission deadline.
- Compile historical awarded-contract data for competitive-intelligence analysis of Mohawk Medbuy spending patterns.
- Identify which solicitation documents are available without a supplier login using the
available_without_loginflag before registering on the portal.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Mohawk Medbuy have an official developer API?+
How does `search_opportunities` distinguish between solicitation types like RFPs, RFQs, and ACANs?+
search_opportunities endpoint does not return a separate solicitation-type field in the summary items. Solicitation type is typically encoded in the title or the tender_id reference number. Use get_opportunity to retrieve the full description, which includes notice-type language, and the bid_type field (Goods or Service) for a broad classification.Can I retrieve the actual bid documents through the API?+
name and the available_without_login flag — for files attached to a solicitation, plus the detail_url linking to the portal page. Documents that require a registered Mohawk Medbuy supplier account are flagged accordingly but their binary content is not returned. The API covers public metadata and freeform description text. You can fork it on Parse and revise to add a download-proxy endpoint for publicly available files.Is supplier or vendor registration data available?+
How fresh is the solicitation data, and are real-time updates supported?+
search_opportunities on a schedule to detect new or status-changed solicitations. For time-sensitive bid monitoring, polling with status=open and checking days_left is the recommended pattern.