Skip to main content

The API for U.S. Government Contracting Data.

Real-time opportunities, federal contracts, entities, and spending — delivered through one fast, modern API.


Get API Access Connect via MCP

One click in Claude or ChatGPT — no API key needed.


Explore the Docs →

# Basic REST example (no SDK required)

import requests

response = requests.get(
    "https://tango.makegov.com/api/opportunities/",
    params={"naics": "541512", "active": "true"},
    headers={"X-API-KEY": "your-api-key"},
)

print(response.json())

Real-Time Opportunity Data

Notices refreshed every 20–60 minutes, including full historical lineage.

Unified Contracts & Entities

Contracts, IDVs, subawards, and entity metadata — normalized into predictable models.

Built for Developers & AI Agents

Modern REST API, stable schemas, SDKs for Python & Node — plus a native MCP connector for Claude, ChatGPT, Claude Code, and Cursor.

Unified Government Data

Tango normalizes messy federal data sources into consistent, developer-friendly models.


Fast Search & Filtering

Full-text and semantic search, smart filters, strong pagination, and predictable queries.

Who Uses Tango?

  • Government vendors
  • Integrators
  • Data platforms
  • Analytics tools
  • Compliance products
  • Research organizations

Get Started in Minutes

SDK Quickstart

from tango import TangoClient

client = TangoClient(api_key="your-api-key")

opps = client.list_opportunities(naics="541512", active=True, limit=10)
print(f"Found {opps.count} open opportunities")

for opp in opps.results:
    print(opp["title"], opp["response_deadline"])

Most endpoints require an API key. You can obtain one from the Tango API portal.

const { TangoClient } = await import("@makegov/tango-node");

const client = new TangoClient({
    apiKey: process.env.TANGO_API_KEY,
});

async function main() {
    const opps = await client.listOpportunities({ naics: "541512", active: true, limit: 5 });
    console.log("Found", opps.count, "open opportunities");

    for (const opp of opps.results) {
        console.log(opp.title, opp.response_deadline);
    }
}

main();
# Claude — one click, OAuth sign-in, no API key
# https://tango.dev/claude

# ChatGPT — one click, from the app directory
# https://tango.dev/chatgpt

# Claude Code
claude mcp add --transport http tango https://tango.dev/mcp

# Cursor — ~/.cursor/mcp.json
{ "mcpServers": { "tango": { "url": "https://tango.dev/mcp" } } }

Then ask: "Which IT contracts worth $1M–$30M expire in the next 12 months — and who's the incumbent?" Any MCP client can connect to https://tango.dev/mcp — see the MCP guide.