GovConWire APIgovconwire.com ↗
Access GovConWire articles, executive profiles, company news, and category feeds via API. 8 endpoints covering stories, search, and GovCon executive data.
What is the GovConWire API?
The GovConWire API provides 8 endpoints for accessing government contracting news, executive profiles, and company-tagged stories from govconwire.com. The get_article endpoint returns full article body text alongside metadata like categories, tags, author ID, and publication date. Endpoints cover browsing by category, keyword search, company-specific news feeds, and paginated executive directory listings — making it straightforward to build GovCon intelligence tools without scraping the site manually.
curl -X GET 'https://api.parse.bot/scraper/e4330d8f-55e5-4992-9e51-5041730e296e/get_latest_stories?limit=5' \ -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 govconwire-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.
"""GovConWire SDK — government contracting news, categories, companies, executives."""
from parse_apis.govconwire_api import GovConWire, StoryCategory, ResourceNotFound
client = GovConWire()
# List latest stories; limit= caps total items fetched.
for story in client.stories.list(limit=3):
print(story.title, story.date)
# Search stories and drill into the first result's full article.
story = client.stories.search(query="defense", limit=1).first()
if story:
article = story.details()
print(article.title, article.body[:120])
# Browse a category using the StoryCategory enum.
for s in client.category(StoryCategory.CONTRACT_AWARDS).stories(limit=3):
print(s.title, s.slug)
# Company news — constructible resource, paginated.
for s in client.company("leidos").news(limit=2):
print(s.title, s.date)
# Popular stories from the homepage sidebar.
for ps in client.popularstories.list(limit=5):
print(ps.title, ps.url)
# Executives: list then get full profile details.
exec_item = client.executives.list(limit=1).first()
if exec_item:
try:
profile = client.executives.get(slug=exec_item.slug)
print(profile.name, profile.company, profile.bio[:80])
except ResourceNotFound as exc:
print(f"Executive not found: {exc.slug}")
print("exercised: stories.list / stories.search / story.details / category.stories / company.news / popularstories.list / executives.list / executives.get")
Retrieve the latest stories from the GovConWire homepage in reverse chronological order. Returns up to 100 stories per call. Each story includes metadata (title, slug, date, excerpt, categories, tags) but not the full article body — use get_article with the slug to fetch full content.
| Param | Type | Description |
|---|---|---|
| limit | integer | Number of stories to return (max 100). |
{
"type": "object",
"fields": {
"stories": "array of story objects, each containing id, title, slug, url, date, excerpt, author_id, categories, and tags"
},
"sample": {
"data": {
"stories": [
{
"id": 344030,
"url": "https://www.govconwire.com/articles/ice-homeland-security-task-force-sole-source-trm-labs",
"date": "2026-06-10T04:55:34",
"slug": "ice-homeland-security-task-force-sole-source-trm-labs",
"tags": [],
"title": "ICE Eyes Sole-Source Award for Homeland Security Task Force Analytical Support",
"excerpt": "ICE has announced plans to award a sole-source contract...",
"author_id": 1001009,
"categories": [
69666,
69625,
1,
38086
]
}
]
},
"status": "success"
}
}About the GovConWire API
Story and Article Access
The get_latest_stories endpoint returns story objects in reverse chronological order, with each object containing id, title, slug, url, date, excerpt, author_id, categories, and tags. You can retrieve up to 100 stories per call. To get the full article text, pass the slug from any story object to get_article, which returns the same metadata fields plus a body field containing the complete article text.
Category, Search, and Company Feeds
get_category_stories accepts a category slug (e.g. contract-awards, exec-moves, ma-activity) and returns paginated results including total_count and total_pages so you can walk the full archive. search_stories accepts a query string and similarly returns paginated results with total_count. For company-specific tracking, get_company_news takes a company slug (e.g. leidos, booz-allen-hamilton) and returns all stories tagged with that company, plus a company_info object that may include a description when available.
Executive Directory
get_executives_list returns a paginated list of GovCon executive objects, each with name, slug, and url. Passing a valid slug to get_executive_profile returns structured profile data: name, title, company, bio, industry, and url. The industry field may be empty for some profiles. Use get_executives_list first to discover valid slugs before querying individual profiles.
Popular Stories
get_most_popular_stories requires no inputs and returns the homepage sidebar popular stories list, with each object containing title and url. This endpoint is useful for trend monitoring but returns only title and url — not the full story metadata fields returned by other endpoints.
The GovConWire API is a managed, monitored endpoint for govconwire.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when govconwire.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 govconwire.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 contract award announcements by polling
get_category_storieswith thecontract-awardsslug - Track executive moves at a specific company by combining
get_company_newsandget_executive_profileresults - Build a GovCon news digest by fetching
get_latest_storieson a schedule and storing newslugvalues - Search historical articles about a specific program or agency keyword using
search_storieswith pagination - Compile executive bios and titles for a GovCon directory using
get_executives_listandget_executive_profile - Identify trending topics by comparing
get_most_popular_storiesresults over time against category feeds - Aggregate M&A coverage by querying
get_category_storieswith thema-activitycategory slug
| 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 GovConWire offer an official developer API?+
What does `get_company_news` return, and how do I find valid company slugs?+
total_count, the resolved company name string, and a company_info object that may include a description. Valid slugs must match existing tags on the site — examples include leidos and booz-allen-hamilton. The best way to discover slugs is to check the tags array on story objects returned by get_latest_stories or search_stories.Does `get_most_popular_stories` return the same fields as other story endpoints?+
title and url per story — not id, slug, date, excerpt, author_id, categories, or tags. To get full metadata for a popular story, take its URL, extract the slug, and call get_article with that slug.Are there endpoints for contract award dollar amounts, award winners, or contracting agency details?+
body text of relevant articles. You can fork this API on Parse and revise it to add a structured contract-data extraction endpoint.What are the pagination limitations across endpoints?+
get_category_stories, search_stories, get_company_news, get_executives_list) accept a page integer and a limit up to 100. total_count and total_pages are returned where applicable, so you can calculate how many requests are needed to walk a full result set. get_most_popular_stories is not paginated and returns a fixed sidebar list.