Alabama Bids APIalabamabids.com ↗
Access Alabama Bid Network bid opportunities, award results, and classifieds via API. Browse by date, get bid details, and retrieve winning bidder data.
What is the Alabama Bids API?
The Alabama Bids API exposes 9 endpoints covering bid solicitations, award results, and classified listings from alabamabids.com. Use get_bids_by_date to pull every bid posted on a given day — including title, scope, bid_id, and detail URL — or get_bid_result_detail to retrieve the winning bidder name, bid amount, opening date, and contract description for a specific award announcement.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/e9fed907-0c0e-4e0e-a3f2-678122e2dc59/get_available_bid_months' \ -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 alabamabids-com-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.
"""Alabama Bid Network SDK — browse bids, results, and classifieds."""
from parse_apis.alabama_bid_network_api import AlabamaBids, BidNotFound
client = AlabamaBids()
# List available bid months to discover the date hierarchy.
for month in client.bidmonths.list(limit=3):
print(month.year, month.month, month.url)
# List days with bids in a given month.
for day in client.biddays.list(year="2026", month="06", limit=5):
print(day.day, day.url)
# List the latest bid opportunities (capped to 5 total items).
bid = client.bids.list_latest(limit=1).first()
if bid:
print(bid.title, bid.scope, bid.added_updated_date)
# Drill into the bid detail.
detail = bid.details()
print(detail.title, detail.scope, detail.added_updated)
# Browse recent bid results and get full award details.
result = client.bidresults.list(limit=1).first()
if result:
print(result.summary, result.id)
award = result.details()
print(award.low_bidder, award.bid_amount, award.opening_date)
# List classified ads and fetch one's full detail.
ad = client.classifieds.list(limit=1).first()
if ad:
try:
full = client.classifieds.get(url=ad.url)
print(full.title, full.description_snippet)
except BidNotFound as exc:
print(f"Not found: {exc}")
print("exercised: bidmonths.list / biddays.list / bids.list_latest / bid.details / bidresults.list / result.details / classifieds.list / classifieds.get")
Retrieve all available year/month combinations that have bid opportunities listed. Returns a descending chronological list spanning several years of historical data. Each entry includes a direct URL to fetch bids for that month.
No input parameters required.
{
"type": "object",
"fields": {
"available_months": "array of objects each containing year (string), month (zero-padded string), and url (string)"
},
"sample": {
"data": {
"available_months": [
{
"url": "https://www.alabamabids.com/bid_opportunities/2026/06/",
"year": "2026",
"month": "06"
},
{
"url": "https://www.alabamabids.com/bid_opportunities/2026/05/",
"year": "2026",
"month": "05"
}
]
},
"status": "success"
}
}About the Alabama Bids API
Browsing and Filtering Bid Opportunities
The API provides a full date-navigation path for bid solicitations. Call get_available_bid_months to retrieve every year/month combination in the archive, then use get_bids_by_month with year and month parameters to see which specific days have listings. Passing day, month, and year to get_bids_by_date returns the full list of bids for that date, each with a bid_id, title, scope, added_updated_date, and url. For the most recent activity without date navigation, get_latest_bids supports a page integer for pagination through the homepage feed.
Bid Detail and Award Results
get_bid_detail accepts a full detail page URL (obtained from listing endpoints) and returns the solicitation's title, scope, and added_updated date. For completed solicitations, get_bid_results lists recent award announcements paginated by page, with each entry carrying a summary, url, and id. Fetching a specific award via get_bid_result_detail yields structured fields: title, low_bidder, bid_amount, opening_date, description, and a raw_content string containing the full page text for cases where structured parsing does not capture every detail.
Classified Listings
get_classifieds returns the classified ads board with optional category filtering. Each classified object includes title, url, description_snippet, updated, and price. The dataset is noted to be small and may contain older listings. For full text, pass any classified's URL to get_classified_detail, which returns title and description.
The Alabama Bids API is a managed, monitored endpoint for alabamabids.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when alabamabids.com 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 alabamabids.com 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 daily Alabama government contract solicitations by polling
get_bids_by_dateand alerting on newbid_idvalues. - Build a bid-award tracker by correlating
get_bid_resultsentries withlow_bidderandbid_amountfields fromget_bid_result_detail. - Aggregate historical bidding activity across multiple years using
get_available_bid_monthsto iterate the full archive. - Identify active vendors in Alabama public contracting by collecting
low_biddernames from award detail records. - Track time-to-award by comparing
added_updateddates from bid listings withopening_datefrom matching award results. - Screen classified equipment listings for public-sector surplus by filtering
get_classifiedsby category and checkingpriceandupdatedfields. - Populate a procurement calendar app with bid deadlines by extracting
titleandadded_updated_datefrom date-range queries.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does alabamabids.com have an official developer API?+
What does `get_bid_result_detail` return beyond the structured fields?+
title, low_bidder, bid_amount, opening_date, and description, the endpoint returns a raw_content field containing the full text of the award page. This is useful when the structured fields do not capture every line item or note present in the original listing.Does `get_bid_detail` return a bid due date or deadline?+
title, scope, and added_updated. Due date is returned when available, but it is not guaranteed to be present for every solicitation — the source listing may omit it. The API surfaces what the detail page provides.Is there an endpoint to search bids by keyword or agency name?+
get_bids_by_date, paginated latest listings via get_latest_bids, and detail lookup by URL. Keyword or agency-name search is not exposed. You can fork this API on Parse and revise it to add a search endpoint if the source supports query filtering.How fresh is the classified ads data from `get_classifieds`?+
updated field so you can check recency. The get_classified_detail endpoint retrieves the full description text if the snippet alone is insufficient.