Skip to main content
EdBid is an independent public registry for education purchasing. It is not a government website.DevelopersSuggestion box
Pilot: EdBid is new. No fees are charged during the pilot. Tester guide · Send feedback

Data Services

Every public notice on EdBid is available as JSON through a free API. You don't need a key. Responses are cached for 30 seconds.

Quick start

curl "https://api.edbid.org/v1/opportunities?q=janitorial&state=MO&notice_type=rfq,ifb&limit=5"

Base URL: https://api.edbid.org · OpenAPI specification

Public endpoints

GETReturns
/v1/opportunitiesSearch opportunities. Filters: q, status (active, inactive, all), notice_type, preference, state, naics, category, institution, posted_from, due_before, sort (-updated, due, -published), page, limit (max 100).
/v1/opportunities/{id}One opportunity with attachments, version history, and interested-vendor count.
/v1/opportunities/{id}/versions/{n}The full notice as it was at version n.
/v1/opportunities/{id}/interestedThe interested vendors list.
/v1/institutionsTop of the directory. Use parent, q, state, or email_domain to filter.
/v1/institutions/{id}One institution with its path, sub-units, and active opportunity count.
/v1/vendorsSearch registered vendors by q, state, naics, or preference.
/v1/vendors/{id}One vendor by EdBid Vendor ID.
/v1/awardsThe 100 most recent award notices.
/v1/openapi.jsonOpenAPI 3.1 description of the public API.

Embed your institution's notices

Show your open notices on your own “Bids & RFPs” page. Replace the institution ID with yours from the directory. The script only reads public data.

<div id="edbid"></div>
<script>
fetch("https://api.edbid.org/v1/opportunities?institution=YOUR_ID&limit=10")
  .then(r => r.json()).then(({ data }) => {
    const ul = document.createElement("ul");
    for (const o of data) {
      const li = document.createElement("li"), a = document.createElement("a");
      a.href = "https://edbid.org/opp/" + o.id;
      a.textContent = o.title + " (due " + new Date(o.responseDue).toLocaleDateString() + ")";
      li.append(a); ul.append(li);
    }
    document.getElementById("edbid").append(ul);
  });
</script>

Terms