Embed Widgets

Add congressional accountability data to your website with a single line of code. Free, no API key required for public widgets.

Quick Start

1

Add the script tag

Include the embed SDK in your page's <head> or before </body>.

<script src="https://api.thewatchdogs.us/embed.js"></script>
2

Add a widget div

Place a <div> with the data-watchdog attribute wherever you want the widget to appear.

<div data-watchdog="vote-tracker" data-rep="E000294"></div>
3

That's it!

The widget auto-initializes when the page loads. Use data-theme="dark" for dark backgrounds.

Vote Tracker Public / No Auth

Compact card showing a rep's voting record: party loyalty %, total votes cast, and recent roll calls. Highlights when a member breaks party rank.

<!-- Tom Emmer (R, MN-06) --> <div data-watchdog="vote-tracker" data-rep="E000294"></div> <!-- Thomas Massie (R, KY-04) — known party maverick --> <div data-watchdog="vote-tracker" data-rep="M001184"></div> <!-- Ilhan Omar (D, MN-05) --> <div data-watchdog="vote-tracker" data-rep="O000173"></div> <!-- Thom Tillis (R, NC-Senate) --> <div data-watchdog="vote-tracker" data-rep="T000476"></div>

Dark Theme

Add data-theme="dark" for dark backgrounds. Works with all widget types.

Dark Theme Examples

<div data-watchdog="vote-tracker" data-rep="M000355" data-theme="dark"></div>

Options

AttributeRequiredDescription
data-watchdogYesWidget type: vote-tracker, receipts, donors, compare-picker, etc.
data-repYes*Bioguide ID of the representative (e.g., E000294)
data-rep2Compare onlySecond rep's Bioguide ID for preset compare widget
data-stateYes*State code for delegation widget (e.g., MN)
data-themeNolight (default) or dark
data-limitNoNumber of items to show (default: 5, max: 20)

Available Widgets

WidgetAuthDescription
vote-trackerPublicVoting record with party loyalty stats and recent votes
scorecardPublicAccountability scorecard with consistency score
positionsPublicStated positions grouped by issue category
receiptsPublicRhetoric vs. Reality — click-to-expand contradictions with full details New
contradictionsPublicAlias for receipts (backward-compatible)
donorsPublicInteractive donor influence: click industry bars to drill down, geo filter New
comparePublicSide-by-side comparison of two reps (preset: data-rep + data-rep2)
compare-pickerPublicInteractive comparison — user picks any two reps with state-first dropdowns New
delegationPublicFull state delegation overview (uses data-state)
town-hallPublicDays since last in-person town hall, color-coded, with stat pills and event history New
votesAPI KeyDetailed vote history with filters
media-dietAPI KeyMedia appearance bias breakdown

Receipts Public / No Auth Interactive

Shows vote contradictions and rhetoric contradictions — when a rep's actions or words conflict with their stated positions. Click any item to expand and see full position quotes, vote details with party split, plain English descriptions, and links to official roll call records.

<!-- Tom Emmer (R, MN-06) — click items to expand --> <div data-watchdog="receipts" data-rep="E000294"></div> <!-- Derrick Van Orden (R, WI-03) --> <div data-watchdog="receipts" data-rep="V000135"></div> <!-- "contradictions" still works as an alias --> <div data-watchdog="contradictions" data-rep="E000294"></div>

Donor Influence Public / No Auth Interactive

Interactive donor analysis: click any industry bar to expand and see individual donors and PACs in that sector sorted by amount. Hover bars for tooltip with exact amount and donor count. Geographic filter buttons show In-District / In-State / Out-of-State donor breakdowns. Data from FEC Schedule A filings.

<!-- Tom Emmer (R, MN-06) — click industry bars to drill down --> <div data-watchdog="donors" data-rep="E000294"></div> <!-- Thomas Massie (R, KY-04) --> <div data-watchdog="donors" data-rep="M001184"></div>

Compare Picker Public / No Auth New

Interactive comparison widget with state-first dropdowns. Your readers pick any two tracked representatives and the comparison loads dynamically — no page reload needed. No data-rep attribute required.

<!-- Interactive — user picks their own reps to compare --> <div data-watchdog="compare-picker"></div>

Rep Comparison (Preset) Public / No Auth

Preset side-by-side comparison of two representatives — party loyalty, votes cast, crossed party line count, and contradictions. Use data-rep and data-rep2 to specify the matchup.

<!-- Emmer vs Omar (MN cross-party) --> <div data-watchdog="compare" data-rep="E000294" data-rep2="O000173"></div> <!-- Massie vs McConnell (KY intra-party) --> <div data-watchdog="compare" data-rep="M001184" data-rep2="M000355"></div>

Media Diet API Key

Visualizes a rep's media appearance bias breakdown — Conservative, Neutral, and Liberal interview sources — with recent appearance list.

<!-- Tom Emmer (R, MN-06) --> <div data-watchdog="media-diet" data-rep="E000294"></div> <!-- Ilhan Omar (D, MN-05) --> <div data-watchdog="media-diet" data-rep="O000173"></div>

Town Hall Tracker Public / No Auth New

Shows days since a rep's last in-person town hall, color-coded by urgency: green (<90 days), yellow (90–179 days), orange (180–364 days), red (365+ days). Includes stat pills for in-person, telephone, and empty-chair events, plus a click-to-expand event history. Data sourced from civic town hall tracking archives.

Dark Theme

<!-- Tom Emmer (R, MN-06) --> <div data-watchdog="town-hall" data-rep="E000294"></div> <!-- Ilhan Omar (D, MN-05) --> <div data-watchdog="town-hall" data-rep="O000173"></div> <!-- Dark theme --> <div data-watchdog="town-hall" data-rep="E000294" data-theme="dark"></div>

Finding Bioguide IDs

Use our API to look up representatives:

// List all reps GET https://api.thewatchdogs.us/v1/reps // Filter by state GET https://api.thewatchdogs.us/v1/reps?state=MN // Look up by short name GET https://api.thewatchdogs.us/v1/reps/by-name/emmer