Discover/Goodjobsfirst API
live

Goodjobsfirst APIviolationtracker.goodjobsfirst.org

Access Good Jobs First Violation Tracker data via API. Search 3,400+ parent companies, filter by agency, year, and penalty. Get violation details and summaries.

Endpoint health
verified 6d ago
get_violation_detail
list_parents
list_agencies
search_violations
get_parent_company_summary
6/6 passing latest checkself-healing
Endpoints
6
Updated
21d ago

What is the Goodjobsfirst API?

This API exposes 6 endpoints covering corporate regulatory violation records from Good Jobs First's Violation Tracker, a database of enforcement actions dating back to 2000. The search_violations endpoint lets you query records by company name, agency, year, case type, and penalty range. Each violation record includes fields like penalty_amount, primary_offense_type, agency, and current_parent, and reference endpoints list all 3,400+ parent companies and every tracked federal agency.

Try it
Page number for pagination (1-based).
Sort field.
Year filter (comma-separated for multiple, e.g. '2020,2021,2022').
Sort order.
Penalty comparison operator.
Company name to search for.
Case type filter.
Parent name match operator.
Company name match operator.
Action type filter.
Agency code filter (e.g. 'EPA', 'OSHA', 'SEC').
Parent company name filter.
Offense type filter.
Offense group filter.
Federal agency filter (comma-separated for multiple).
Major industry filter (comma-separated for multiple).
Minimum penalty amount.
State/local agency filter (comma-separated for multiple).
Level of government filter.
Presidential administration filter.
api.parse.bot/scraper/bd06de44-0e3a-452b-baf0-8df937e4644d/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/bd06de44-0e3a-452b-baf0-8df937e4644d/search_violations?page=1&sort=penalty_amount&year=2020&order=asc&pen_op=gt&company=exxon&company_op=starts' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

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 violationtracker-goodjobsfirst-org-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: Violation Tracker SDK — search violations, drill into details, explore agencies."""
from parse_apis.violation_tracker_api import ViolationTracker, CompanyMatchOp, Sort, ViolationNotFound

client = ViolationTracker()

# Search for Exxon violations by company name, capped to 5 results.
for v in client.violationsummaries.search(company="exxon", company_op=CompanyMatchOp.STARTS, limit=5):
    print(v.company, v.penalty_amount, v.year)

# Drill down: take one violation summary and fetch its full detail.
result = client.violationsummaries.search(company="exxon", limit=1).first()
if result:
    detail = result.details()
    print(detail.company, detail.penalty, detail.violation_description)

# List agencies and get the first one's summary.
agency = client.agencies.list(limit=1).first()
if agency:
    agency_summary = agency.summary()
    print(agency_summary.summary.agency_name, agency_summary.summary.penalty_total_since_2000)

# Get a parent company summary by constructing from a known slug.
parent = client.parent("exxon-mobil")
try:
    parent_summary = parent.summary()
    print(parent_summary.summary.current_parent_company_name, parent_summary.summary.major_industry)
except ViolationNotFound as exc:
    print(f"Parent not found: {exc}")

print("exercised: violationsummaries.search / details / agencies.list / agency.summary / parent.summary")
All endpoints · 6 totalmissing one? ·

Full-text search over corporate violation records with filters on company, agency, year, penalty amount, offense group, and industry. Returns paginated results sorted by penalty amount descending by default. Each result includes the violation ID slug for drilling into full details via get_violation_detail.

Input
ParamTypeDescription
pageintegerPage number for pagination (1-based).
sortstringSort field.
yearstringYear filter (comma-separated for multiple, e.g. '2020,2021,2022').
orderstringSort order.
pen_opstringPenalty comparison operator.
companystringCompany name to search for.
case_typestringCase type filter.
parent_opstringParent name match operator.
company_opstringCompany name match operator.
action_typestringAction type filter.
agency_codestringAgency code filter (e.g. 'EPA', 'OSHA', 'SEC').
parent_namestringParent company name filter.
offense_typestringOffense type filter.
offense_groupstringOffense group filter.
federal_agencystringFederal agency filter (comma-separated for multiple).
major_industrystringMajor industry filter (comma-separated for multiple).
penalty_amountstringMinimum penalty amount.
state_local_agencystringState/local agency filter (comma-separated for multiple).
level_of_governmentstringLevel of government filter.
presidential_administrationstringPresidential administration filter.
Response
{
  "type": "object",
  "fields": {
    "results": "array of violation record objects containing company, current_parent, year, agency, penalty_amount, primary_offense_type, violation_id, and parent_id",
    "pagination": "object with current_page (integer) and has_next (boolean), or null if no pagination",
    "total_results_text": "string describing the total number of matching records"
  }
}

About the Goodjobsfirst API

Search and Filter Violations

The search_violations endpoint is the primary query surface. It accepts filters including company (name substring), year (single or comma-separated list like 2020,2021,2022), case_type, and pen_op (a penalty comparison operator for threshold filtering). Results are paginated objects containing pagination.current_page, pagination.has_next, total_results_text, and an array of violation records. Each record in the array includes company, current_parent, year, agency, penalty_amount, primary_offense_type, and a violation_id slug used to fetch full details.

Violation Detail and Company Summaries

get_violation_detail accepts a violation_id slug (e.g. epa-exxon-mobil-corp) and returns the full record: violation_description, offense_group, primary_offense, penalty, agency, and current_parent_company. get_parent_company_summary takes a parent_id slug and returns a summary object with fields like penalty_total_since_2000_for_..., major_industry, headquartered_in, and ownership_structure, plus arrays of individual violations, top offense_types, and top offense_groups — useful for building a compliance profile of a single corporate family.

Agency-Level Enforcement Data

get_agency_summary accepts an agency_code (e.g. EPA, OSHA, SEC, DOJ_CRIMINAL, WHD) and returns the agency's penalty_total_since_2000, number_of_records, a list of top 10 parent companies by total_penalty_dollars, and recent major violations. The list_agencies and list_parents endpoints return complete reference lists — agency codes with full names, and parent company slugs with display names — which map directly to the parameters used across other endpoints.

Reliability & maintenanceVerified

The Goodjobsfirst API is a managed, monitored endpoint for violationtracker.goodjobsfirst.org — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when violationtracker.goodjobsfirst.org 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 violationtracker.goodjobsfirst.org 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.

Last verified
6d ago
Latest check
6/6 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a corporate compliance history tool showing penalty totals and offense breakdowns by parent company using get_parent_company_summary
  • Track enforcement trends across federal agencies by comparing penalty_total_since_2000 and number_of_records from get_agency_summary
  • Filter violations by year range and company name to research a specific firm's regulatory history before a business partnership
  • Aggregate primary_offense_type distributions from search_violations to identify which offense categories generate the largest penalties in a given industry
  • Build journalist or watchdog tooling that links violation IDs from search results to full violation_description text via get_violation_detail
  • Screen parent company slugs from list_parents against your portfolio companies to surface any with significant enforcement records
  • Compare agency enforcement activity by querying multiple agency codes and ranking them by total penalties and record counts
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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.

Frequently asked questions
Does Good Jobs First provide an official developer API for Violation Tracker?+
Good Jobs First does not publish a documented public developer API for Violation Tracker. The database is accessible through their website at violationtracker.goodjobsfirst.org, but there is no official API with authentication, versioning, or developer documentation.
How does pagination work in `search_violations`, and how do I know if there are more pages?+
The response includes a pagination object with current_page (integer) and has_next (boolean). Pass the page parameter to advance through results. If has_next is false, you have reached the last page. The total_results_text field in the response gives a human-readable count of matching records.
Does the API cover state-level regulatory agencies or only federal ones?+
The current endpoints cover federal regulatory agencies tracked in the Violation Tracker database. State agency enforcement records are not exposed through the current endpoint set. You can fork this API on Parse and revise it to add an endpoint targeting state-level enforcement data if that coverage is available in the source.
Are there any known reliability issues with specific endpoints?+
get_parent_company_summary notes that some large parent companies with extensive violation histories may experience intermittent upstream timeouts. This is a function of the volume of records being aggregated for those companies, not a general API stability issue. Building in retry logic for that endpoint is advisable for the largest corporate families.
Can I filter `search_violations` results by industry or offense group?+
The search_violations endpoint currently supports filters for company, year, case_type, pen_op, and parent_op, but does not expose a direct industry or offense_group filter parameter. Offense group data is available in violation detail and parent summary responses. You can fork this API on Parse and revise it to add an offense_group or industry filter to the search endpoint.
Page content last updated . Spec covers 6 endpoints from violationtracker.goodjobsfirst.org.
Related APIs in Government PublicSee all →
example-indian-regulatory-site.com API
Search and retrieve penalty data from Indian regulators like SEBI and RBI to discover fines, violation types, and enforcement actions against specific companies or across regulatory bodies. Find detailed information about penalties imposed on entities, browse violation categories, and access comprehensive enforcement records from major Indian financial authorities.
example-eu-regulatory-site.com API
Track GDPR fines and penalties issued across EU authorities, search by company or violation type, and analyze enforcement trends with detailed penalty information and regulatory statistics. Monitor compliance risks by accessing real-time data on fine amounts, violating companies, and specific breach details from official enforcement records.
opencorporates.com API
Access comprehensive company registration data, officer details, and filing histories from OpenCorporates across jurisdictions worldwide to research businesses and their leadership. Search for specific companies or officers, retrieve detailed corporate information, and explore filing records to support due diligence, compliance checks, and business intelligence.
offshoreleaks.icij.org API
Search for entities, individuals, and their financial connections across major offshore leak investigations including the Panama Papers and Pandora Papers. Explore detailed relationship graphs, browse officer records, and analyze bulk datasets to uncover offshore financial activities and networks.
icrimewatch.net API
Search for sex offenders across multiple jurisdictions and retrieve detailed information including their physical descriptions, offenses, and dates of birth. Discover registered agencies and access comprehensive offender profiles to help protect your community.
sec.gov API
Search for publicly traded companies and instantly access their SEC filings with details like filing type, date, description, and accession numbers. Find the regulatory documents you need to research company financial information and compliance records.
finra.org API
Search FINRA disciplinary actions and BrokerCheck records to verify the background, credentials, and regulatory history of broker firms and individual financial professionals. Look up broker information alphabetically or by specific criteria to research potential advisors and ensure they have a clean compliance record.
oig.hhs.gov API
Search and access HHS Office of Inspector General corporate integrity agreements with details like company names, effective dates, settlement amounts, and agreement status across states. Find specific agreement information including terms and conditions for compliance monitoring cases.