ODNI APIodni.gov ↗
Access JCAT page data via API: First Responder's Toolbox, guides, community partner organizations with geo coordinates, and JCAT mission overview.
What is the ODNI API?
The ODNI NCTC JCAT API exposes all content from the Joint Counterterrorism Assessment Team page in a single endpoint, get_jcat_page_data, returning 6 top-level response objects. These include the JCAT mission overview, three lines of effort, categorized First Responder's Toolbox items with featured entries and full item lists, guides and resources with contact details, fellowship program description, and a list of Community Impact partner organizations with geolocation data.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/ebfeadc7-f4ad-4935-82e1-3b84c6c13f4b/get_jcat_page_data' \ -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 odni-gov-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: ODNI JCAT page SDK — fetch and explore counterterrorism resources."""
from parse_apis.odni_gov_api import Jcat, ParseError
client = Jcat()
# Fetch the full JCAT page content in one call.
try:
page = client.pages.get()
except ParseError as e:
# Page structure may have changed; surface the wire error code.
print(f"Extraction failed: {e.code}")
raise
# Display the mission overview.
print(page.overview[:120])
# List the lines of effort.
for line in page.lines_of_effort:
print(" -", line)
# Browse the First Responder's Toolbox categories and their featured items.
for category in page.toolbox:
print(f"\n[{category.category}]")
print(f" Featured: {category.featured.title}")
print(f" URL: {category.featured.url}")
# Show the first two items in this category.
for item in category.items[:2]:
print(f" • {item.title}")
# Show guides and resources with available links.
for guide in page.guides_and_resources:
label = guide.more_url if guide.more_url else "(no link)"
print(f"{guide.title} -> {label}")
# Show a few Community Impact partner organizations.
for org in page.organizations[:3]:
print(f"{org.name} ({org.state}) — {org.website}")
print("\nexercised: pages.get / Page / ToolboxCategory / FeaturedItem / ToolboxItem / Guide / Organization")
Retrieves all content from the JCAT page in a single request. Returns the page overview, lines of effort, First Responder's Toolbox items organized by category (Threat Identification, Targets, Partnerships) with featured items and full item lists, Guides and Resources descriptions, Community Impact partner organizations with geographic data, and Fellowship Program information. Makes one HTTP request to the page and parses the static HTML plus embedded JavaScript data.
No input parameters required.
{
"type": "object",
"fields": {
"toolbox": "array of toolbox categories, each with category name, featured item (title, url, description), and items array (title, url)",
"overview": "JCAT mission description text",
"organizations": "array of Community Impact partner organizations with name, state, latitude, longitude, logo_url, and website",
"lines_of_effort": "array of JCAT's three main work areas",
"fellowship_program": "description of the JCAT Fellowship Program",
"guides_and_resources": "array of guide/resource entries with title, description, contact_email, and/or more_url"
},
"sample": {
"data": {
"toolbox": [
{
"items": [
{
"url": "https://www.odni.gov/download/14142/?tmstv=1787268374",
"title": "Considerations for Clandestine Fentanyl Labs"
},
{
"url": "https://www.odni.gov/download/13738/?tmstv=1782321665",
"title": "Disruption of Huachicol Activities Requires Multidisciplinary Approach"
}
],
"category": "Threat Identification",
"featured": {
"url": "https://www.odni.gov/download/14142/?tmstv=1787268374",
"title": "Considerations for Clandestine Fentanyl Labs",
"description": "Provides response, recognition, and safety considerations for first responders on how to identify indicators of clandestine fentanyl labs."
}
}
],
"overview": "NCTC's Joint Counterterrorism Assessment Team (JCAT) helps improve public safety by sharing counterterrorism information with federal, state, local, tribal, territorial, and private sector partners.",
"organizations": [
{
"name": "City of Phoenix Fire Department, AZ",
"state": "AZ",
"website": "https://www.phoenix.gov/fire",
"latitude": 33.463,
"logo_url": "https://www.odni.gov/wp-content/uploads/City-of-Phoenix-Fire-Department_AZ.webp",
"longitude": -112.08
}
],
"lines_of_effort": [
"INTELLIGENCE PRODUCTION",
"OUTREACH & EDUCATION",
"SUPPORT"
],
"fellowship_program": "JCAT's Federal Fellowship Program integrates state, local, tribal, and territorial first responders and public safety professionals into the Intelligence Community.",
"guides_and_resources": [
{
"title": "HSIN, LEEP, RISS and TRIPWIRE",
"more_url": "https://www.odni.gov/wp-content/uploads/JCAT-Accessing-CT-Info-NEW.pdf",
"description": "The Homeland Security Information Network (HSIN)..."
},
{
"title": "Counterterrorism Digest",
"description": "An unclassified compendium of international and domestic news...",
"contact_email": "[email protected]"
}
]
},
"status": "success"
}
}About the ODNI API
What the API Returns
The single get_jcat_page_data endpoint returns all structured content from the ODNI NCTC Joint Counterterrorism Assessment Team page. The overview field contains the JCAT mission description text, and lines_of_effort provides an array of the three main work areas JCAT focuses on. The fellowship_program field describes the JCAT Fellowship Program offering.
First Responder's Toolbox
The toolbox response field is an array of categories — Threat Identification, Targets, and Partnerships — each containing a featured item (with title, url, and description) and an items array of additional resources (each with title and url). This makes it straightforward to display categorized toolbox content or build a filtered resource directory.
Guides, Resources, and Organizations
The guides_and_resources array returns each guide or resource entry with a title, description, optional contact_email, and optional more_url for further reading. The organizations array lists Community Impact partner organizations with name, state, latitude, longitude, logo_url, and website — enabling map-based displays or directory listings of JCAT's network of community partners across the United States.
No Parameters Required
get_jcat_page_data takes no input parameters. Every call returns the full page dataset in one response, covering all toolbox categories, all organizations, all guide entries, and all narrative sections simultaneously.
The ODNI API is a managed, monitored endpoint for odni.gov — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when odni.gov 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 odni.gov 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?+
- Build a searchable First Responder's Toolbox directory organized by the three JCAT categories returned in the
toolboxfield. - Render a map of JCAT Community Impact partner organizations using the
latitude,longitude, andstatefields from theorganizationsarray. - Aggregate JCAT guides and resources into an internal counterterrorism reference portal using the
guides_and_resourcesentries. - Monitor changes to JCAT lines of effort or mission overview text over time by periodically calling
get_jcat_page_dataand diffing thelines_of_effortandoverviewfields. - Build a partner directory page listing community organizations with their logos and websites using the
logo_urlandwebsitefields. - Surface JCAT fellowship program information in a government training or recruitment application using the
fellowship_programfield. - Populate contact directories for counterterrorism resource coordinators using
contact_emailvalues from theguides_and_resourcesarray.
| 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 ODNI provide an official developer API for JCAT content?+
What does the `toolbox` field in the response actually contain?+
toolbox field is an array of objects, one per category (Threat Identification, Targets, Partnerships). Each object includes a featured item with a title, url, and description, plus an items array of additional resources with title and url. The featured item highlights a primary resource within that category.Are individual JCAT reports or publications returned by this API?+
Does the organizations array cover all 50 states?+
organizations array reflects the Community Impact partners listed on the JCAT page, which may not cover all 50 states. Coverage depends on which organizations JCAT lists as partners at the time of the request. The API does not support filtering by state directly, though the state field is present on each organization object. You can fork this API on Parse and revise it to add state-level filtering as a query parameter.