InterObservers.

Employer Desk API

Reviewed Sep 27, 2026 the same verified records as the Desk pages How we verify

Not a substitute for the advice of an attorney. General information; laws vary by state. Terms of use

Free static JSON files with the state employment rules on the Desk, the document templates and the 2027 changes. Every rule record carries its official source, a word-for-word quote and the date it was checked.

See the endpoints
50states and DC covered
487verified rule records today
11rule topics per state
21document templates

What it is

The Employer Desk API is a set of plain JSON files, rebuilt with the Desk pages from the same data. It is meant for developers, researchers and AI agents that need a state employment rule with a source they can show. There is nothing to install: fetch a URL and read the JSON.

  • No key and no sign-up. The files are public.
  • Read only. There are no write endpoints and no query parameters; each URL is a file.
  • Same rules as the pages. A rule is in the API only if it is shown as verified on the Desk.

Base URL

https://interobservers.com/api/v1/

Every endpoint below is relative to it. Responses are UTF-8 JSON and can be fetched from any origin (CORS is open).

Endpoints

Real output from the current build, shortened: each list keeps its first item, and the fields every file shares (attribution, license, disclaimer, generated_at, api_version, dataset) are left out.

/api/v1/index.json

Where to start: the list of endpoints, every rule topic and every state with its file, and record counts. Example file: /api/v1/index.json.

Example: index.json
{
  "name": "InterObservers Employer Desk API",
  "version": "1.0.0",
  "docs": "https://interobservers.com/desk/api/",
  "conventions": {
    "state_files": "One file per state at /api/v1/states/<code>.json, code = two-letter postal code in lowercase (dc for District of Columbia). This is the only form.",
    "record_status": "status \"verified\": checked against official sources within the last 180 days. status \"no_verified_answer\": we do not state a rule; use check_url.",
    "no_verified_answer_case": "An entry with \"case\" marks a specific case that is not verified while other cases of the same topic are."
  },
  "endpoints": [
    {
      "path": "/api/v1/index.json",
      "url": "https://interobservers.com/api/v1/index.json",
      "description": "This index."
    },
    {
      "path": "/api/v1/states/{code}.json",
      "url": "https://interobservers.com/api/v1/states/ca.json",
      "description": "All topics for one state."
    }
  ],
  "topics": [
    {
      "topic": "minimum_wage",
      "name": "Minimum wage",
      "api_url": "https://interobservers.com/api/v1/rules/minimum_wage.json",
      "page_url": "https://interobservers.com/desk/laws/minimum-wage-by-state/"
    }
  ],
  "states": [
    {
      "state": "AL",
      "name": "Alabama",
      "api_url": "https://interobservers.com/api/v1/states/al.json",
      "rulebook_url": "https://interobservers.com/desk/states/alabama/"
    }
  ],
  "counts": {
    "states": 51,
    "topics": 11,
    "verified_records": 487,
    "no_verified_answer": 231,
    "state_topics_verified": 354,
    "state_topics_unanswered": 207,
    "hiring_laws": 65,
    "wage_occupations": 830,
    "money_industries": 203,
    "money_sba_states": 57,
    "money_survival_sectors": 20,
    "money_county_states": 51,
    "conversation_protected_activity_verified": 22,
    "conversation_eeoc_jurisdictions": 61,
    "conversation_nlrb_fiscal_years": 5,
    "performance_occupations": 923,
    "meeting_icebreakers": 386,
    "meeting_activities": 85,
    "meeting_agendas": 10,
    "meeting_huddle_facts": 236,
    "money_pay_states": 17,
    "templates": 21,
    "situations": 8,
    "changes_2027": 44,
    "thresholds": 62,
    "posters": 42
  }
}

/api/v1/states/{code}.json

Every rule topic for one state. {code} is the two-letter postal code in lowercase (dc for the District of Columbia). 51 files. Example file: /api/v1/states/ca.json.

Example: states/ca.json
{
  "state": "CA",
  "name": "California",
  "slug": "california",
  "rulebook_url": "https://interobservers.com/desk/states/california/",
  "api_url": "https://interobservers.com/api/v1/states/ca.json",
  "topics": {
    "minimum_wage": [
      {
        "state": "CA",
        "topic": "minimum_wage",
        "case": "standard",
        "rule": "California minimum wage is $16.90 per hour for all employers (effective January 1, 2026); higher industry-specific or local minimums may apply.",
        "values": {
          "rate_usd_per_hour": 16.9
        },
        "law": "California minimum wage (U.S. DOL WHD State Minimum Wage Laws table)",
        "source_url": "https://www.dol.gov/agencies/whd/minimum-wage/state",
        "source_quote": "California Basic Minimum Rate (per hour): $16.90",
        "second_source_url": "https://www.dir.ca.gov/dlse/faq_minimumwage.htm",
        "second_source_quote": "Effective January 1, 2026, the minimum wage is $16.90 per hour for all employers, not otherwise covered by a higher minimum wage specific to an industry or a locality.",
        "verified_at": "2026-09-27",
        "status": "verified"
      }
    ]
  }
}

/api/v1/rules/{topic}.json

One rule topic for all 50 states and DC. 11 topics: minimum_wage, payday_frequency, meal_break, rest_break, final_pay_fired, final_pay_quit, pto_payout, paid_sick_leave, at_will_exceptions, service_letter, separation_notice. Example file: /api/v1/rules/final_pay_fired.json.

Example: rules/final_pay_fired.json
{
  "topic": "final_pay_fired",
  "name": "Final paycheck after a termination",
  "page_url": "https://interobservers.com/desk/laws/final-paycheck-laws-by-state/",
  "api_url": "https://interobservers.com/api/v1/rules/final_pay_fired.json",
  "counts": {
    "states": 51,
    "states_verified": 37
  },
  "states": [
    {
      "state": "AK",
      "name": "Alaska",
      "rulebook_url": "https://interobservers.com/desk/states/alaska/",
      "records": [
        {
          "state": "AK",
          "topic": "final_pay_fired",
          "case": "standard",
          "rule": "If the employer ends the employment, for any reason, final wages are due within three working days after the termination.",
          "values": {
            "working_days": 3
          },
          "law": "Alaska Stat. § 23.05.140(b)",
          "source_url": "https://www.akleg.gov/basis/statutes.asp?media=print&secStart=23.05.140&secEnd=23.05.140",
          "source_quote": "If the employment is terminated by the employer, regardless of the cause for the termination, payment is due within three working days after the termination.",
          "second_source_url": "https://labor.alaska.gov/lss/whfaq.htm",
          "second_source_quote": "If you are terminated by your employer, your employer must pay you all monies owed within three working days after the day of termination (not counting weekends and holidays).",
          "verified_at": "2026-09-24",
          "status": "verified"
        }
      ]
    }
  ]
}

/api/v1/templates/index.json

The list of document templates, with the page and the file for each. Example file: /api/v1/templates/index.json.

Example: templates/index.json
{
  "templates": [
    {
      "slug": "attendance-policy",
      "name": "Attendance policy",
      "page_url": "https://interobservers.com/desk/templates/attendance-policy/",
      "api_url": "https://interobservers.com/api/v1/templates/attendance-policy.json",
      "variant_of": null,
      "situation": "no-call-no-show"
    }
  ]
}

/api/v1/templates/{slug}.json

One template: its fields, its optional clauses and the full text with a placeholder for each field (the file explains the syntax in placeholder_syntax), plus the state rule topics it depends on. Example file: /api/v1/templates/termination-letter.json.

Example: templates/termination-letter.json
{
  "slug": "termination-letter",
  "name": "Termination letter",
  "description": "A plain, neutral termination letter: the decision, the last day, final pay, benefits, company property and a contact. Pick your state to see the final-pay rule that applies, with its official source.",
  "page_url": "https://interobservers.com/desk/templates/termination-letter/",
  "api_url": "https://interobservers.com/api/v1/templates/termination-letter.json",
  "variant_of": null,
  "situation": {
    "slug": "fire-an-employee",
    "name": "Fire an employee",
    "page_url": "https://interobservers.com/desk/fire-an-employee/"
  },
  "fields": [
    {
      "key": "employee_name",
      "label": "Employee name",
      "type": "text",
      "required": true
    },
    {
      "key": "job_title",
      "label": "Employee job title",
      "type": "text",
      "required": true
    }
  ],
  "clauses": [
    {
      "id": "severance",
      "label": "Include severance paragraph",
      "default": false
    }
  ],
  "placeholder_syntax": "{{field_key}}",
  "document": [
    {
      "type": "meta",
      "text": "{{company_name}}"
    },
    {
      "type": "meta",
      "text": "{{letter_date}}"
    },
    {
      "type": "meta",
      "text": "To: {{employee_name}}, {{job_title}}"
    }
  ],
  "state_rules": [
    {
      "topic": "final_pay_fired",
      "api_url": "https://interobservers.com/api/v1/rules/final_pay_fired.json"
    }
  ],
  "sources": [
    {
      "name": "U.S. Department of Labor: Last paycheck",
      "url": "https://www.dol.gov/general/topic/wages/lastpaycheck"
    }
  ],
  "license_note": "Free self-help template, not legal advice."
}

/api/v1/situations/index.json

The situations (write-up, PIP, termination and others) with their steps, documents and the rule topics that apply. Example file: /api/v1/situations/index.json.

Example: situations/index.json
{
  "situations": [
    {
      "slug": "write-up-an-employee",
      "name": "Write up an employee",
      "page_url": "https://interobservers.com/desk/write-up-an-employee/",
      "summary": "To write up an employee, gather the facts with dates, check your written policy, meet privately, describe the issue and the expectation, set a review date, give the employee a written warning to sign for receipt, and keep a copy in the personnel file. Use the same process for everyone with the same issue.",
      "steps": [
        {
          "t": "Collect the facts",
          "d": "Write down what happened with dates, times and who saw it. Pull any records: time sheets, emails, customer complaints."
        }
      ],
      "documents": [
        {
          "slug": "verbal-warning",
          "name": "Verbal warning log",
          "api_url": "https://interobservers.com/api/v1/templates/verbal-warning.json",
          "page_url": "https://interobservers.com/desk/templates/verbal-warning/"
        }
      ],
      "rule_keys": [
        "at_will_exceptions",
        "service_letter"
      ],
      "sources": [
        {
          "name": "EEOC: Retaliation",
          "url": "https://www.eeoc.gov/retaliation"
        }
      ]
    }
  ]
}

/api/v1/changes-2027.json

Employment law changes scheduled for 2027, each with a quote from its official source. A change whose new value has not been announced says so; no number is guessed. Example file: /api/v1/changes-2027.json.

Example: changes-2027.json
{
  "name": "Employment law changes scheduled for 2027",
  "items": [
    {
      "jurisdiction": "AZ",
      "state": "AZ",
      "level": "state",
      "topic": "minimum_wage",
      "effective_date": "2027-01-01",
      "new_value": null,
      "previous_value": "$15.15/hour",
      "indexing_method": "The minimum wage shall be increased on January 1, 2021 and on January 1 of successive years, by the increase in the cost of living.",
      "status": "pending_announcement",
      "status_label": "Not announced yet",
      "source_url": "https://www.azleg.gov/ars/23/00363.htm",
      "source_quote": "The minimum wage shall be increased on January 1, 2021 and on January 1 of successive years, by the increase in the cost of living.",
      "additional_sources": []
    }
  ],
  "note": "Each item quotes an official source. Status \"pending_announcement\" means the new value has not been published yet; no number is guessed."
}

/api/v1/hiring-laws.json

Hiring laws: the federal pre-employment inquiry rules we verified (22) and, for all 50 states and DC, salary history, criminal history on applications (ban the box), protected classes and pay ranges in job postings. Each verified record has its law, two official sources with the quoted text and the verification date; a state topic without one says no_verified_answer with the official place to check. Statewide laws only. Example file: /api/v1/hiring-laws.json.

Example: hiring-laws.json
{
  "name": "Hiring laws: federal pre-employment inquiry rules and state hiring laws",
  "page_url": "https://interobservers.com/desk/laws/illegal-interview-questions-by-state/",
  "api_url": "https://interobservers.com/api/v1/hiring-laws.json",
  "topics": {
    "salary_history": "Salary history questions",
    "ban_the_box": "Criminal history on job applications (ban the box)",
    "protected_classes": "Protected classes",
    "pay_transparency": "Pay range in job postings"
  },
  "note": "Statewide laws only; city and county laws are not covered. A state topic without a verified record says no_verified_answer with the official place to check; it never means that the state has no law. no_such_state_law true means both official sources say explicitly that there is no such statewide rule.",
  "counts": {
    "federal_verified": 22,
    "state_records_verified": 43,
    "state_topics_unanswered": 161
  },
  "federal": [
    {
      "jurisdiction": "US",
      "law_key": "pre_employment_inquiries",
      "law_name": "EEOC guidance on pre-employment inquiries (general)",
      "case": "general",
      "rule": "The EEOC says that, as a general rule, information requested in the pre-employment process should be limited to what is essential to decide whether a person is qualified for the job, and that information about race, sex, national origin, age and religion is irrelevant to that decision.",
      "requires": "Limit pre-employment questions to information needed to decide whether the applicant is qualified for the job.",
      "covers": null,
      "scope": null,
      "employees_min": null,
      "effective": null,
      "classes": null,
      "no_such_state_law": false,
      "values": {},
      "in_law_words": false,
      "law": "EEOC: Prohibited Employment Policies/Practices, Pre-Employment Inquiries (General)",
      "source_label": "EEOC: Prohibited Employment Policies/Practices, Pre-Employment Inquiries (General)",
      "source_kind": "agency",
      "source_url": "https://www.eeoc.gov/prohibited-employment-policiespractices",
      "source_quote": "As a general rule, the information obtained and requested through the pre-employment process should be limited to those essential for determining if a person is qualified for the job; whereas, information regarding race, sex, national origin, age, and religion are irrelevant in such determinations.",
      "second_source_url": "https://www.govinfo.gov/link/uscode/42/2000e-2?link-type=html",
      "second_source_quote": "to fail or refuse to hire or to discharge any individual, or otherwise to discriminate against any individual with respect to his compensation, terms, conditions, or privileges of employment, because of such individual's race, color, religion, sex, or national origin",
      "verified_at": "2026-09-28",
      "status": "verified"
    }
  ],
  "states": [
    {
      "state": "AK",
      "name": "Alaska",
      "rulebook_url": "https://interobservers.com/desk/states/alaska/",
      "topics": {
        "protected_classes": [
          {
            "jurisdiction": "AK",
            "law_key": "protected_classes",
            "law_name": "Alaska Human Rights Law, AS 18.80.220(a)(1)",
            "case": "statewide",
            "rule": "Alaska employers may not refuse employment, bar from employment or discriminate in compensation or terms of employment because of race, religion, color or national origin, or because of age, physical or mental disability, sex, marital status, changes in marital status, pregnancy or parenthood when the reasonable demands of the position do not require that distinction.",
            "requires": null,
            "covers": null,
            "scope": null,
            "employees_min": null,
            "effective": null,
            "classes": [
              "race",
              "religion",
              "color",
              "national origin",
              "age",
              "physical or mental disability",
              "sex",
              "marital status",
              "changes in marital status",
              "pregnancy",
              "parenthood"
            ],
            "no_such_state_law": false,
            "values": {},
            "in_law_words": true,
            "law": "AS 18.80.220(a)(1)",
            "source_label": "AS 18.80.220(a)(1)",
            "source_kind": "statute",
            "source_url": "https://www.akleg.gov/basis/statutes.asp?media=print&secStart=18.80.220&secEnd=18.80.220",
            "source_quote": "because of the person's race, religion, color, or national origin, or because of the person's age, physical or mental disability, sex, marital status, changes in marital status, pregnancy, or parenthood when the reasonable demands of the position do not require distinction on the basis of age, physical or mental disability, sex, marital status, changes in marital status, pregnancy, or parenthood",
            "second_source_url": "https://www.govinfo.gov/content/pkg/USCOURTS-akd-1_19-cv-00016/pdf/USCOURTS-akd-1_19-cv-00016-0.pdf",
            "second_source_quote": "because of the person’s race, religion, color, or national origin, or because of the person’s age, physical or mental disability, sex, marital status, changes in marital status, pregnancy, or parenthood",
            "verified_at": "2026-09-28",
            "status": "verified"
          }
        ]
      }
    }
  ]
}

/api/v1/wages/index.json

National wage percentiles (10th, 25th, median, 75th, 90th and mean, per year and per hour) for 830 occupations, copied from the BLS Occupational Employment and Wage Statistics (OEWS) May 2025 estimates, and the list of state files. A null value is one BLS does not publish; top_coded and not_available say why. Example file: /api/v1/wages/index.json.

Example: wages/index.json
{
  "name": "Wage percentiles by occupation, United States (BLS OEWS, May 2025)",
  "page_url": "https://interobservers.com/desk/tools/salary-comparison/",
  "api_url": "https://interobservers.com/api/v1/wages/index.json",
  "period": "May 2025",
  "release_date": "2026-05-15",
  "release_url": "https://www.bls.gov/news.release/ocwage.nr0.htm",
  "top_code": {
    "is_cap": false,
    "cap_annual": null,
    "cap_hourly": null,
    "footnote_quote": "#  = indicates a wage equal to or greater than $115.00 per hour or $239,200 per year",
    "meaning": "top_coded fields: BLS did not publish this percentile (above its reporting limit). The footnote amount in the BLS files is not a cap: BLS publishes specific values above it since the May 2025 estimates, so no value may be assumed for a top_coded field.",
    "source_url": "https://www.bls.gov/oes/oes_ques.htm"
  },
  "source": "U.S. Bureau of Labor Statistics, Occupational Employment and Wage Statistics (OEWS), May 2025",
  "note": "Values as published by BLS (employment rounded by BLS). null = not published: top_coded names the fields BLS did not publish (top_code.meaning; never assume a value for them), not_available the fields BLS marks as not available; an occupation published only per year (or per hour) has null in the other unit. verified_at is the date the BLS files were downloaded and checked.",
  "all_occupations": {
    "employment": 155495730,
    "annual": {
      "p10": 31200,
      "p25": 37590,
      "p50": 50980,
      "p75": 80520,
      "p90": 128560,
      "mean": 69770
    },
    "hourly": {
      "p10": 15,
      "p25": 18.07,
      "p50": 24.51,
      "p75": 38.71,
      "p90": 61.81,
      "mean": 33.54
    },
    "top_coded": [],
    "not_available": [],
    "source_url": "https://www.bls.gov/oes/special-requests/oesm25nat.zip",
    "verified_at": "2026-09-28"
  },
  "counts": {
    "occupations": 830,
    "states": 51
  },
  "occupations": [
    {
      "soc": "11-1011",
      "title": "Chief Executives",
      "major": "11-0000",
      "annual_only": false,
      "hourly_only": false,
      "employment": 204350,
      "annual": {
        "p10": 75700,
        "p25": 129540,
        "p50": 213990,
        "p75": 356200,
        "p90": 507730,
        "mean": 269630
      },
      "hourly": {
        "p10": 36.39,
        "p25": 62.28,
        "p50": 102.88,
        "p75": 171.25,
        "p90": 244.1,
        "mean": 129.63
      },
      "top_coded": [],
      "not_available": [],
      "source_url": "https://www.bls.gov/oes/special-requests/oesm25nat.zip",
      "verified_at": "2026-09-28"
    }
  ],
  "states": [
    {
      "state": "AL",
      "name": "Alabama",
      "api_url": "https://interobservers.com/api/v1/wages/al.json"
    }
  ]
}

/api/v1/wages/{code}.json

The same wage percentiles by occupation for one state (51 files, {code} in lowercase), with the state figure for all occupations when BLS publishes it. Example file: /api/v1/wages/ca.json.

Example: wages/ca.json
{
  "state": "CA",
  "name": "California",
  "title": "Wage percentiles by occupation, California (BLS OEWS, May 2025)",
  "page_url": "https://interobservers.com/desk/tools/salary-comparison/",
  "api_url": "https://interobservers.com/api/v1/wages/ca.json",
  "period": "May 2025",
  "release_date": "2026-05-15",
  "release_url": "https://www.bls.gov/news.release/ocwage.nr0.htm",
  "top_code": {
    "is_cap": false,
    "cap_annual": null,
    "cap_hourly": null,
    "footnote_quote": "#  = indicates a wage equal to or greater than $115.00 per hour or $239,200 per year",
    "meaning": "top_coded fields: BLS did not publish this percentile (above its reporting limit). The footnote amount in the BLS files is not a cap: BLS publishes specific values above it since the May 2025 estimates, so no value may be assumed for a top_coded field.",
    "source_url": "https://www.bls.gov/oes/oes_ques.htm"
  },
  "source": "U.S. Bureau of Labor Statistics, Occupational Employment and Wage Statistics (OEWS), May 2025",
  "note": "Values as published by BLS (employment rounded by BLS). null = not published: top_coded names the fields BLS did not publish (top_code.meaning; never assume a value for them), not_available the fields BLS marks as not available; an occupation published only per year (or per hour) has null in the other unit. verified_at is the date the BLS files were downloaded and checked.",
  "all_occupations": {
    "employment": 18213700,
    "annual": {
      "p10": 35950,
      "p25": 41600,
      "p50": 58240,
      "p75": 97880,
      "p90": 159080,
      "mean": 80690
    },
    "hourly": {
      "p10": 17.28,
      "p25": 20,
      "p50": 28,
      "p75": 47.06,
      "p90": 76.48,
      "mean": 38.79
    },
    "top_coded": [],
    "not_available": [],
    "source_url": "https://www.bls.gov/oes/special-requests/oesm25st.zip",
    "verified_at": "2026-09-28"
  },
  "counts": {
    "occupations": 807
  },
  "occupations": [
    {
      "soc": "11-1011",
      "title": "Chief Executives",
      "employment": 34700,
      "annual": {
        "p10": 85790,
        "p25": 133610,
        "p50": 218600,
        "p75": 351090,
        "p90": 486830,
        "mean": 272920
      },
      "hourly": {
        "p10": 41.25,
        "p25": 64.23,
        "p50": 105.1,
        "p75": 168.79,
        "p90": 234.05,
        "mean": 131.21
      },
      "top_coded": [],
      "not_available": [],
      "source_url": "https://www.bls.gov/oes/special-requests/oesm25st.zip",
      "verified_at": "2026-09-28"
    }
  ]
}

Topic files

Money data

Official U.S. government aggregates behind the Money Desk pages: IRS Statistics of Income, BLS Business Employment Dynamics and QCEW, Census County Business Patterns and Nonemployer Statistics, and SBA loan data. Each file names its agency sources, the period, the retrieval date (verified_at) and the license or public domain statement of the agency (source_license). Ratios we compute are labeled as computed by InterObservers, with the formula. A withheld or unpublished cell is null with its flag, never estimated. General information, not financial or tax advice. Figures are official aggregates for an industry or area, not a forecast for any one business.

The same data, readable without code:

/api/v1/money/index.json

Where to start for the Money data: the list of Money files with their size, and the list of state county files. Example file: /api/v1/money/index.json.

Example: money/index.json
{
  "name": "InterObservers Money Desk data",
  "api_url": "https://interobservers.com/api/v1/money/index.json",
  "money_disclaimer": "General information, not financial or tax advice. Figures are official aggregates for an industry or area, not a forecast for any one business.",
  "pages": [
    "https://interobservers.com/desk/data/county-business-patterns/",
    "https://interobservers.com/desk/data/profit-margin-by-industry/",
    "https://interobservers.com/break-even-point-calculator/"
  ],
  "files": [
    {
      "file": "money/margins.json",
      "api_url": "https://interobservers.com/api/v1/money/margins.json",
      "bytes": 579860,
      "description": "IRS SOI receipts, net income, cost of goods sold, payroll and rent by industry, with net margins and cost shares computed by InterObservers from the official totals."
    },
    {
      "file": "money/counties/{ST}.json",
      "states": [
        {
          "state": "AL",
          "name": "Alabama",
          "api_url": "https://interobservers.com/api/v1/money/counties/AL.json",
          "naics_levels": [
            "sector",
            "3-digit",
            "4-digit"
          ]
        }
      ]
    }
  ],
  "note": "Official U.S. government aggregates (IRS, BLS, Census Bureau, SBA). Each file names its sources, period and retrieval date; ratios we compute are labeled with their formula."
}

/api/v1/money/margins.json

IRS Statistics of Income totals for 203 industries (sole proprietorships Tax year 2023, S corporations Tax year 2022, partnerships Tax year 2023): receipts, net income, cost of goods sold, payroll and rent in thousands of dollars, and net margin and cost shares computed by InterObservers from the IRS totals, each with its formula. A value the IRS did not print is null with its flag. Official source: IRS Statistics of Income. Example file: /api/v1/money/margins.json.

Example: money/margins.json
{
  "name": "Profit margin and cost structure by industry (IRS Statistics of Income)",
  "page_url": "https://interobservers.com/desk/data/profit-margin-by-industry/",
  "pages": [
    "https://interobservers.com/desk/data/profit-margin-by-industry/",
    "https://interobservers.com/break-even-point-calculator/",
    "https://interobservers.com/profit-margin-calculator/"
  ],
  "api_url": "https://interobservers.com/api/v1/money/margins.json",
  "source_url": "https://www.irs.gov/statistics/soi-tax-stats-nonfarm-sole-proprietorship-statistics",
  "source_urls": [
    "https://www.irs.gov/statistics/soi-tax-stats-nonfarm-sole-proprietorship-statistics",
    "https://www.irs.gov/pub/irs-soi/23sp01br.xls"
  ],
  "verified_at": "2026-09-28",
  "retrieved_on": "2026-09-28",
  "money_disclaimer": "General information, not financial or tax advice. Figures are official aggregates for an industry or area, not a forecast for any one business.",
  "period": {
    "sole_prop": "Tax year 2023",
    "s_corp": "Tax year 2022",
    "partnership": "Tax year 2023"
  },
  "release": [
    "SOURCE: IRS, Statistics of Income Division, Sole Proprietorship Returns 2023, March 2026"
  ],
  "tables": [
    "Table 1. Nonfarm Sole Proprietorships: Business Receipts, Selected Deductions, Payroll, and Net Income, by Industrial Sectors, Tax Year 2023"
  ],
  "units": "Money amounts in thousands of dollars, as printed (\"money amounts are in thousands of dollars\"); returns, partnerships and partners are counts. Ratios are unitless fractions.",
  "source_license": {
    "summary": "Public domain: IRS SOI tables are works of the U.S. Government (17 U.S.C. 105). No license statement was found on irs.gov itself; cite \"IRS, Statistics of Income Division\" with the table SOURCE line.",
    "quote": "Copyright protection under this title is not available for any work of the United States Government",
    "url": "https://www.copyright.gov/title17/92chap1.html"
  },
  "note": "Amounts are IRS SOI totals for each industry, in thousands of dollars, as printed. Every ratio is computed by InterObservers from IRS SOI totals with the formula shown; it is an industry aggregate (total over total), not a typical or median business. A null value with suppressed true (ratios) or a flag (amounts) is a cell the IRS did not print or deleted to avoid disclosure; it is never estimated. naics is given only where the IRS industry label matches a Census 2022 NAICS title exactly (assigned by InterObservers; the IRS prints no codes); otherwise it is null. Sole proprietors have no salary line for the owner, so their net income includes the owner's pay and is not comparable with corporate margins.",
  "flags_legend": {
    "*": "Estimate should be used with caution because of the small number of sample returns on which it is based (value kept).",
    "**": "Data combined to prevent disclosure of taxpayer information (printed number kept; a cell printed \"**\" with no number is null).",
    "d": "Deleted / not shown to avoid disclosure; included in totals (null).",
    "text": "Cell printed as text with no number (null; see printed)."
  },
  "caveats": [
    {
      "topic": "sole_prop_owner_pay",
      "text": "Salaries paid to owners are neither deducted as wages paid on Schedule C nor included as wages received on Form 1040, U.S. Individual Income Tax Return.",
      "source": "IRS SOI Bulletin, \"Sole Proprietorship Returns, Tax Year 2022\" (latest article published; the TY2023 article is not on the landing page yet), footnote 4",
      "source_url": "https://www.irs.gov/pub/irs-soi/soi-a-insp-id2502.pdf"
    }
  ],
  "counts": {
    "industries": 203,
    "sole_prop_with_figures": 151,
    "sole_prop_sectors_with_figures": 19,
    "sole_prop_industries_with_figures": 132
  },
  "industries": [
    {
      "id": "all-nonfarm-industries",
      "label": "All nonfarm industries",
      "level": "all",
      "parent": null,
      "parent_sector": null,
      "naics": null,
      "sole_prop_has_figures": true,
      "sole_prop": {
        "returns": 31125909,
        "receipts": 2063191945,
        "net_income_less_deficit": 377210993,
        "cogs": 559994504,
        "payroll": 175013634,
        "salaries_wages": 121796125,
        "cost_of_labor": 53217509,
        "contract_labor": 113575079,
        "rent_machinery_equipment": 16903495,
        "rent_other_business_property": 51396884,
        "total_deductions": 1687308383,
        "with_net_income_returns": 21411462,
        "with_net_income_receipts": 1691393034,
        "with_net_income_net_income": 530799244,
        "flags": {}
      },
      "s_corp": {
        "label_as_printed": "All industries",
        "row_match": "all_industries",
        "returns": 5266702,
        "receipts": 10429590929,
        "total_receipts": 10689519027,
        "cogs": 6210401780,
        "compensation_of_officers": 349956774,
        "salaries_wages": 1164295039,
        "rents_paid": 249866093,
        "total_deductions": 9924326118,
        "net_income_less_deficit": 763268999,
        "flags": {}
      },
      "partnership": {
        "label_as_printed": "All industries",
        "row_match": "all_industries",
        "partnerships": 4575280,
        "receipts": 8061139481,
        "total_income": 8976674829,
        "cogs": 4422371672,
        "salaries_wages": 1039750064,
        "guaranteed_payments": 87786312,
        "rent_paid": 153810930,
        "total_deductions": 8212882736,
        "ordinary_business_income": 763792093,
        "net_income": 1262709449,
        "loss": 498917356,
        "flags": {}
      },
      "ratios": {
        "net_margin_sole_prop": {
          "value": 0.1828,
          "formula": "net income less deficit / business receipts (sole proprietorships, all returns)"
        },
        "net_margin_profitable_sole_prop": {
          "value": 0.3138,
          "formula": "net income / business receipts (sole proprietorships with net income only)"
        }
      }
    }
  ]
}

/api/v1/money/survival.json

Share of new private sector establishments still open after 1, 2, 5 and 10 years, copied from BLS Business Employment Dynamics (Data through March 2025): 20 U.S. sector rows and 53 state rows (total private), each with the cohort year it describes. Example file: /api/v1/money/survival.json.

Example: money/survival.json
{
  "name": "Establishment survival rates by sector and by state (BLS Business Employment Dynamics)",
  "page_url": "https://interobservers.com/desk/data/county-business-patterns/",
  "pages": [
    "https://interobservers.com/desk/data/county-business-patterns/",
    "https://interobservers.com/desk/data/profit-margin-by-industry/"
  ],
  "api_url": "https://interobservers.com/api/v1/money/survival.json",
  "source_url": "https://www.bls.gov/bdm/bdmage.htm",
  "source_urls": [
    "https://www.bls.gov/bdm/bdmage.htm"
  ],
  "verified_at": "2026-09-28",
  "retrieved_on": "2026-09-28",
  "money_disclaimer": "General information, not financial or tax advice. Figures are official aggregates for an industry or area, not a forecast for any one business.",
  "period": "Data through March 2025",
  "release": "BLS Business Employment Dynamics: Establishment Age and Survival Data",
  "table": "Table 7. Survival of private sector establishments by opening year",
  "latest_cohort": "Annual openings, year ended March 2025",
  "source_citation": "Source: U.S. Bureau of Labor Statistics, Business Employment Dynamics, Establishment Age and Survival Data, Table 7 (data through March 2025).",
  "source_license": {
    "summary": "Public domain; BLS asks to be cited as the source.",
    "quote": "The Bureau of Labor Statistics (BLS) is a Federal government agency and everything that we publish, both in hard copy and electronically, is in the public domain, except for previously copyrighted photographs and illustrations. You are free to use our public domain material without specific permission, although we do ask that you cite the Bureau of Labor Statistics as the source.",
    "url": "https://www.bls.gov/bls/linksite.htm"
  },
  "note": "Survival rates and counts are copied from BLS BED Table 7, not computed. summary.<years> is the most recent cohort that has a row for that many years; cohort_opened names the year ended in March in which those establishments opened. Establishments (locations), not firms; private sector only; state files are total private only (BLS does not publish state survival by industry). A null value with a flag is a cell BLS did not publish.",
  "table_note": "Table note (verbatim): NOTE: A '_' indicates that the data are not available and a 'N' indicates that the data do not meet BLS disclosure standards.",
  "definitions": [
    {
      "text": "Table 5 is a survival matrix which displays the number of establishments opening in a given year and how many of the original cohort survived into the next year, third year, fourth year, and so forth.",
      "source_url": "https://www.bls.gov/bdm/bdagefaq.htm"
    }
  ],
  "counts": {
    "sectors": 20,
    "states": 53
  },
  "us_by_sector": [
    {
      "naics": "10",
      "label": "Total Private",
      "source_url": "https://www.bls.gov/bdm/us_age_naics_00_table7.txt",
      "summary": {
        "1": {
          "rate_pct": 77.9,
          "surviving": 769449,
          "establishments_at_birth": 988310,
          "cohort_opened": "March 2024 (year ended)"
        },
        "2": {
          "rate_pct": 65.9,
          "surviving": 691774,
          "establishments_at_birth": 1049106,
          "cohort_opened": "March 2023 (year ended)"
        },
        "5": {
          "rate_pct": 51.4,
          "surviving": 394689,
          "establishments_at_birth": 767573,
          "cohort_opened": "March 2020 (year ended)"
        },
        "10": {
          "rate_pct": 34.7,
          "surviving": 235071,
          "establishments_at_birth": 677876,
          "cohort_opened": "March 2015 (year ended)"
        }
      }
    }
  ],
  "by_state": [
    {
      "state": "AL",
      "name": "Alabama",
      "source_url": "https://www.bls.gov/bdm/al_age_total_table7.txt",
      "summary": {
        "1": {
          "rate_pct": 77.1,
          "surviving": 10192,
          "establishments_at_birth": 13212,
          "cohort_opened": "March 2024 (year ended)"
        },
        "2": {
          "rate_pct": 64.5,
          "surviving": 10335,
          "establishments_at_birth": 16012,
          "cohort_opened": "March 2023 (year ended)"
        },
        "5": {
          "rate_pct": 51.4,
          "surviving": 4580,
          "establishments_at_birth": 8908,
          "cohort_opened": "March 2020 (year ended)"
        },
        "10": {
          "rate_pct": 36.4,
          "surviving": 2691,
          "establishments_at_birth": 7388,
          "cohort_opened": "March 2015 (year ended)"
        }
      }
    }
  ]
}

/api/v1/money/sba-loans.json

SBA 7(a) and 504 loans by state, by sector and by state and sector: fiscal year 2025 volume, and the charge-off rate of closed loans approved in fiscal years 2016 to 2020 (computed by InterObservers from SBA loan data). Cells with fewer than 10 loans are null. No lender names: why_no_lender_names quotes the SBA data dictionary. Example file: /api/v1/money/sba-loans.json.

Example: money/sba-loans.json
{
  "name": "SBA 7(a) and 504 loans by state and industry (aggregates)",
  "page_url": "https://interobservers.com/desk/data/county-business-patterns/",
  "pages": [
    "https://interobservers.com/desk/data/county-business-patterns/",
    "https://interobservers.com/desk/data/profit-margin-by-industry/"
  ],
  "api_url": "https://interobservers.com/api/v1/money/sba-loans.json",
  "source_url": "https://data.sba.gov/dataset/7a-504-foia",
  "source_urls": [
    "https://data.sba.gov/dataset/7a-504-foia"
  ],
  "verified_at": "2026-09-28",
  "retrieved_on": "2026-09-28",
  "money_disclaimer": "General information, not financial or tax advice. Figures are official aggregates for an industry or area, not a forecast for any one business.",
  "period": {
    "volume": "Federal fiscal year 2025 (Oct 1, 2024 - Sep 30, 2025)",
    "outcomes": "Loans approved in federal fiscal years 2016-2020, status as of the file date"
  },
  "as_of": "2026-06-30",
  "source": "U.S. Small Business Administration, \"7(a) & 504 FOIA\" (SBA-OHA-2016-08-001)",
  "source_license": {
    "summary": "U.S. Government Works (public domain in the U.S.); source: U.S. Small Business Administration, 7(a) & 504 FOIA.",
    "quote": "U.S. Government Works",
    "url": "https://data.sba.gov/dataset/7a-504-foia",
    "source_citation": "U.S. Small Business Administration, 7(a) & 504 FOIA data (data.sba.gov, dataset SBA-OHA-2016-08-001), as of June 30, 2026."
  },
  "data_dictionary": "https://data.sba.gov/sites/default/files/uploaded_resources/7a_504_foia_data_dictionary.xlsx",
  "note": "Aggregates of the official SBA FOIA loan files, counted by InterObservers. chargeoff_rate_of_closed is computed by InterObservers from SBA loan data: charged off / (charged off + paid in full) among loans already closed; it is not a default probability. Rows with fewer than 10 loans are null with suppressed true; a null rate or amount carries its flag (closed_lt10, chgoff_amount_lt10). A null window object means there is no aggregate row for it. Territories and codes appear as in the file.",
  "why_no_lender_names": {
    "published": false,
    "reason": "No field in the official files identifies the lender that approved a loan: the SBA data dictionary defines the 7(a) BankName field as \"Name of the bank that the loan is currently assigned to\", so lender names are not published here.",
    "dictionary_quote": "Name of the bank that the loan is currently assigned to",
    "source_url": "https://data.sba.gov/sites/default/files/uploaded_resources/7a_504_foia_data_dictionary.xlsx"
  },
  "computed": {
    "loans": "Approved loans in the window whose LoanStatus is not CANCLD (includes undisbursed COMMIT / NOT FUNDED). Counted by us.",
    "cancelled": "Approved loans in the window with LoanStatus CANCLD (excluded from loans, amounts and medians)."
  },
  "suppression": "Rows with fewer than 10 loans: every number null, suppressed=true, flag lt10_loans. chargeoffs.amount null when 1-9 loans were charged off (flag chgoff_amount_lt10). chargeoff_rate_of_closed null when CHGOFF+PIF < 10 (flag closed_lt10); flag rate_includes_recent_cohorts when the window reaches past FY2020 (most of those loans are still active, so the rate skews high; do not compare with mature windows). by_naics4_us lists only unsuppressed industries, the 100 largest by loans per program and window.",
  "definitions": {
    "504": {
      "LoanStatus": "• CHGOFF = Charged Off\n• CANCLD = Cancelled\n• EXEMPT = The status of loans that have been disbursed but have not been cancelled, paid in full, or charged off are exempt from disclosure under FOIA Exemption 4\n• NOT FUNDED = Undisbursed\n• PIF = Paid In Full\n• CLOSED = Loan that was closed for any reason other than Cancelled, Paid In Full, or Charged Off.  This status is no longer in use.  ",
      "GrossApproval": "SBA/CDC loan amount",
      "JobsSupported": "Total Jobs Created + Jobs Retained as reported by lender on SBA Loan Application.  SBA does not review, audit, or validate these numbers - they are simply self-reported, good faith estimates by the lender."
    },
    "7a": {
      "LoanStatus": "Current status of loan:  \n• CANCLD = Cancelled\n• CHGOFF = Charged Off\n• COMMIT = Undisbursed\n• EXEMPT = The status of loans that have been disbursed but have not been cancelled, paid in full, or charged off are exempt from disclosure under FOIA Exemption 4\n• PIF = Paid In Full",
      "GrossApproval": "Total loan amount",
      "JobsSupported": "Total Jobs Created + Jobs Retained as reported by lender on SBA Loan Application.  SBA does not review, audit, or validate these numbers - they are simply self-reported, good faith estimates by the lender."
    },
    "note": "Copied verbatim from the official SBA data dictionary."
  },
  "counts": {
    "states": 57,
    "sectors": 20,
    "state_sectors": 1051
  },
  "us_total": {
    "504": {
      "volume_fy2025": {
        "loans": 6530,
        "gross_approval": 7557423000,
        "sba_guaranteed": null,
        "median_loan": 748000,
        "median_rate": null,
        "median_term_months": 300,
        "jobs_supported": 69918,
        "suppressed": false,
        "flags": [
          "rate_includes_recent_cohorts"
        ]
      },
      "outcomes_fy2016_2020": {
        "loans": 26641,
        "closed": 8404,
        "chargeoffs": {
          "count": 139,
          "amount": 89940658
        },
        "chargeoff_rate_of_closed": 0.0165,
        "suppressed": false,
        "flags": []
      }
    },
    "7a": {
      "volume_fy2025": {
        "loans": 64096,
        "gross_approval": 32065939300,
        "sba_guaranteed": 23639768116,
        "median_loan": 180000,
        "median_rate": 10.25,
        "median_term_months": 120,
        "jobs_supported": 624827,
        "suppressed": false,
        "flags": [
          "rate_includes_recent_cohorts"
        ]
      },
      "outcomes_fy2016_2020": {
        "loans": 249268,
        "closed": 195302,
        "chargeoffs": {
          "count": 17197,
          "amount": 2555541330
        },
        "chargeoff_rate_of_closed": 0.0881,
        "suppressed": false,
        "flags": []
      }
    }
  },
  "by_state": [
    {
      "504": {
        "volume_fy2025": {
          "loans": 12,
          "gross_approval": 6298000,
          "sba_guaranteed": null,
          "median_loan": 541500,
          "median_rate": null,
          "median_term_months": 300,
          "jobs_supported": 48,
          "suppressed": false,
          "flags": [
            "closed_lt10"
          ]
        },
        "outcomes_fy2016_2020": {
          "loans": 55,
          "closed": 15,
          "chargeoffs": {
            "count": 2,
            "amount": null
          },
          "chargeoff_rate_of_closed": 0.1333,
          "suppressed": false,
          "flags": [
            "chgoff_amount_lt10"
          ]
        }
      },
      "state": "AK",
      "name": "Alaska",
      "7a": {
        "volume_fy2025": {
          "loans": 86,
          "gross_approval": 60229600,
          "sba_guaranteed": 44854595,
          "median_loan": 354350,
          "median_rate": 10.25,
          "median_term_months": 120,
          "jobs_supported": 788,
          "suppressed": false,
          "flags": [
            "closed_lt10"
          ]
        },
        "outcomes_fy2016_2020": {
          "loans": 461,
          "closed": 326,
          "chargeoffs": {
            "count": 13,
            "amount": 1886414
          },
          "chargeoff_rate_of_closed": 0.0399,
          "suppressed": false,
          "flags": []
        }
      }
    }
  ],
  "by_sector_us": [
    {
      "504": {
        "volume_fy2025": {
          "loans": 37,
          "gross_approval": 36322000,
          "sba_guaranteed": null,
          "median_loan": 630000,
          "median_rate": null,
          "median_term_months": 300,
          "jobs_supported": 275,
          "suppressed": false,
          "flags": [
            "closed_lt10"
          ]
        },
        "outcomes_fy2016_2020": {
          "loans": 143,
          "closed": 47,
          "chargeoffs": {
            "count": 1,
            "amount": null
          },
          "chargeoff_rate_of_closed": 0.0213,
          "suppressed": false,
          "flags": [
            "chgoff_amount_lt10"
          ]
        }
      },
      "naics2": "11",
      "title": "Agriculture, Forestry, Fishing and Hunting",
      "7a": {
        "volume_fy2025": {
          "loans": 553,
          "gross_approval": 430869700,
          "sba_guaranteed": 319345200,
          "median_loan": 188000,
          "median_rate": 9.5,
          "median_term_months": 120,
          "jobs_supported": 3089,
          "suppressed": false,
          "flags": [
            "chgoff_amount_lt10",
            "rate_includes_recent_cohorts"
          ]
        },
        "outcomes_fy2016_2020": {
          "loans": 3505,
          "closed": 2903,
          "chargeoffs": {
            "count": 105,
            "amount": 22584931
          },
          "chargeoff_rate_of_closed": 0.0362,
          "suppressed": false,
          "flags": []
        }
      }
    }
  ],
  "sector_titles": {
    "11": "Agriculture, Forestry, Fishing and Hunting"
  },
  "by_state_sector": [
    {
      "504": {
        "volume_fy2025": null,
        "outcomes_fy2016_2020": null
      },
      "state": "AK",
      "naics2": "11",
      "7a": {
        "volume_fy2025": {
          "loans": null,
          "gross_approval": null,
          "sba_guaranteed": null,
          "median_loan": null,
          "median_rate": null,
          "median_term_months": null,
          "jobs_supported": null,
          "suppressed": true,
          "flags": [
            "lt10_loans"
          ]
        },
        "outcomes_fy2016_2020": {
          "loans": 21,
          "closed": 17,
          "chargeoffs": {
            "count": 0,
            "amount": 0
          },
          "chargeoff_rate_of_closed": 0,
          "suppressed": false,
          "flags": []
        }
      }
    }
  ]
}

/api/v1/money/counties/{ST}.json

One file per state (51 files, {ST} = two-letter code in uppercase): for each county and industry, the CBP 2023 establishments, employment, payroll and size classes, the NES 2023 nonemployer firms and receipts, and the QCEW 2025 establishments, employment and average annual pay. Rows are arrays in the order given in columns; a withheld cell is null with its flag. CBP uses 2017 NAICS and NES and QCEW 2022 NAICS: below the sector, a code whose official title differs between the two versions has its NES and QCEW parts set to null and is listed in not_comparable. Example file: /api/v1/money/counties/TX.json.

Example: money/counties/TX.json
{
  "name": "Business counts, employment, pay and receipts by county and industry: Texas",
  "state": "TX",
  "state_name": "Texas",
  "page_url": "https://interobservers.com/desk/data/county-business-patterns/",
  "api_url": "https://interobservers.com/api/v1/money/counties/TX.json",
  "source_url": "https://www.census.gov/programs-surveys/cbp/data/datasets.html",
  "source_urls": [
    "https://www.census.gov/programs-surveys/cbp/data/datasets.html"
  ],
  "verified_at": "2026-09-28",
  "retrieved_on": "2026-09-28",
  "money_disclaimer": "General information, not financial or tax advice. Figures are official aggregates for an industry or area, not a forecast for any one business.",
  "period": {
    "cbp": "2023",
    "nes": "2023",
    "qcew": "2025 annual averages"
  },
  "sources": [
    {
      "dataset": "cbp",
      "program": "County Business Patterns (CBP)",
      "period": "2023",
      "released": "2025-06-26",
      "naics_vintage": "2017 NAICS",
      "source_citation": "U.S. Census Bureau, County Business Patterns: 2023 (released June 26, 2025), county file cbp23co.txt. Establishment counts by employment size; employment and payroll with noise infusion.",
      "source_urls": [
        "https://www.census.gov/programs-surveys/cbp/data/datasets.html",
        "https://www2.census.gov/programs-surveys/cbp/datasets/2023/cbp23co.zip",
        "https://www2.census.gov/programs-surveys/cbp/technical-documentation/records-layouts/2020_record_layouts/county-layout-2020.txt",
        "https://www.census.gov/programs-surveys/cbp/technical-documentation/methodology.html"
      ],
      "retrieved_on": "2026-09-28"
    }
  ],
  "source_license": {
    "summary": "Works of the U.S. Government, public domain (17 U.S.C. 105); BLS asks to be cited as the source of QCEW and the Census Bureau as the source of the original data.",
    "quote": "Copyright protection under this title is not available for any work of the United States Government",
    "url": "https://www.copyright.gov/title17/92chap1.html",
    "census_citation_quote": "Data users who create their own estimates using data from disseminated tables and other data should cite the Census Bureau as the source of the original data only.",
    "census_citation_url": "https://www.census.gov/about/policies/citation.html"
  },
  "naics_levels": [
    "sector",
    "3-digit"
  ],
  "note": "Values as published: CBP 2023 and NES 2023 (U.S. Census Bureau) and QCEW 2025 annual averages, private ownership (BLS). NAICS sectors and 3-digit industries only: the 4-digit detail would make this file larger than 1.5 MB. Industry \"total\": CBP and NES all industries, QCEW total private. CBP uses 2017 NAICS, NES and QCEW 2022 NAICS: below the sector level a code is joined only when its official title is the same in both versions; otherwise the NES and/or QCEW part is null for that code and the code is listed in not_comparable (and in industries.<naics>.not_comparable), never shown beside the CBP value as if it were the same industry. CBP and NES leave out cells with fewer than 3 businesses. size_100plus is computed by InterObservers as the sum of the published 100+ size classes (a lower bound when a class is not available). A null value is a cell the agency withheld or did not publish (flags: QCEW disclosure_code \"N\", NES receipts_flag \"S\" and firms_flag \"S\"); it is never estimated.",
  "row_format": "counties[].industries.<naics> = [cbp, nes, qcew]; each part is an array in the order of columns, or null when that dataset has no published cell for the county and industry, or when the code is not comparable between NAICS 2017 (CBP) and NAICS 2022 (NES, QCEW): see not_comparable.",
  "not_comparable": {
    "nes": [
      "425",
      "445",
      "518",
      "519"
    ],
    "qcew": [
      "425",
      "445",
      "518",
      "519"
    ]
  },
  "columns": {
    "cbp": [
      "estab",
      "emp",
      "emp_noise_flag",
      "payroll_k",
      "payroll_noise_flag",
      "size_lt5",
      "size_5_9",
      "size_10_19",
      "size_20_49",
      "size_50_99",
      "size_100plus"
    ],
    "nes": [
      "firms",
      "receipts_k",
      "receipts_flag",
      "firms_flag (only when the establishment count is withheld: \"S\")"
    ],
    "qcew": [
      "estabs",
      "emp",
      "avg_annual_pay",
      "disclosure_code (only when suppressed: \"N\"; emp and pay are then null)"
    ]
  },
  "flags_legend": {
    "noise": {
      "G": "low noise, under 2 percent",
      "H": "medium noise, 2 to under 5 percent",
      "J": "high noise, 5 percent or more"
    },
    "S": "withheld to avoid disclosing data that do not meet publication standards; included in broader totals",
    "N": "QCEW disclosure code N: only the establishment count is published; emp and avg_annual_pay are null"
  },
  "counts": {
    "counties": 255,
    "industries": 120
  },
  "industries": {
    "11": {
      "cbp_2017_naics": "Agriculture, Forestry, Fishing and Hunting"
    },
    "21": {
      "cbp_2017_naics": "Mining, Quarrying, and Oil and Gas Extraction"
    }
  },
  "counties": [
    {
      "fips": "48001",
      "name": "Anderson County, Texas",
      "industries": {
        "11": [
          [
            4,
            7,
            "J",
            570,
            "H",
            4,
            null,
            null,
            null,
            null,
            null
          ],
          [
            74,
            3685,
            "G"
          ],
          [
            30,
            219,
            43826
          ]
        ],
        "21": [
          [
            21,
            300,
            "G",
            21895,
            "H",
            13,
            null,
            3,
            null,
            null,
            null
          ],
          [
            58,
            5233,
            "G"
          ],
          [
            19,
            241,
            80514
          ]
        ]
      }
    }
  ]
}

Conversation data

The federal anti-retaliation provisions and the official charge counts behind the Conversation Desk. The law records follow the same rules as the state rules: a verbatim quote, a second official source and a verification date, or no verified answer. The EEOC and NLRB counts are copied as the agencies publish them, with the period and the date we retrieved them; a withheld cell is null with its flag, never estimated.

The same data, readable without code, in the difficult conversation script builder.

/api/v1/conversation/index.json

Where to start for the Conversation data: the list of Conversation files with their size. Example file: /api/v1/conversation/index.json.

Example: conversation/index.json
{
  "name": "InterObservers Conversation Desk data",
  "api_url": "https://interobservers.com/api/v1/conversation/index.json",
  "page_url": "https://interobservers.com/desk/templates/difficult-conversation-script/",
  "files": [
    {
      "file": "conversation/protected-activity.json",
      "api_url": "https://interobservers.com/api/v1/conversation/protected-activity.json",
      "bytes": 50840
    },
    {
      "file": "conversation/eeoc-charges.json",
      "api_url": "https://interobservers.com/api/v1/conversation/eeoc-charges.json",
      "bytes": 44299
    },
    {
      "file": "conversation/nlrb-charges.json",
      "api_url": "https://interobservers.com/api/v1/conversation/nlrb-charges.json",
      "bytes": 7758
    }
  ],
  "note": "Federal anti-retaliation provisions verified against two official sources, and official EEOC and NLRB charge counts. Each file names its sources and the date they were checked. General information, not legal advice."
}

/api/v1/conversation/protected-activity.json

Federal anti-retaliation provisions: 22 verified records of what an employee is protected for doing, naming 17 distinct kinds of protected employee activity (the activity field of each record), plus 2 verified coverage or exclusion records. Each record quotes the law word for word (citation) and a second official source on a different government website (second_source), with the date both were checked. 2 records have no verified answer yet and are listed in pending with the official page only, never a rule or a quote. extra_quotes lists more statute or regulation text shown with a record, each quoted word for word from its official page, with its kind and label. When a source was read from an Internet Archive copy of its official address, archived gives the date of that copy; otherwise it is null. Federal law only. Official source: 42 U.S.C. 2000e-3(a). Example file: /api/v1/conversation/protected-activity.json.

Example: conversation/protected-activity.json
{
  "name": "Federal protections for employee complaints and protected activity (anti-retaliation provisions)",
  "page_url": "https://interobservers.com/desk/templates/difficult-conversation-script/",
  "api_url": "https://interobservers.com/api/v1/conversation/protected-activity.json",
  "jurisdiction": "US",
  "source_url": "https://www.govinfo.gov/link/uscode/42/2000e-3?link-type=html",
  "verified_at": "2026-09-29",
  "note": "Federal law only; state and local laws are not covered. Each verified record quotes the law word for word (citation) and a second official source on a different government website (second_source), both checked against saved copies of the official pages, with the date of that check (verified_at). A record is published only while it is verified and verified_at is at most 180 days old. A record listed in pending has no verified answer: it carries only the official page to check (draft_official_url), never a rule or a quote. law_key \"coverage\" and \"exclusion\" records say who a law covers or leaves out. extra_quotes lists more statute or regulation text shown with a record, each quoted word for word from its official page, with its kind (statute or regulation) and label. A source read from an Internet Archive copy of its official address, because the official site did not answer, has archived set to the date of that copy (YYYY-MM-DD); otherwise archived is null. Where covers or protects gives the reading of an agency or of a regulation, it names it (\"the EEOC says\"). Whether a law applies to a given employer (for example its number of employees) is not decided here.",
  "counts": {
    "verified": 24,
    "verified_protected_activity": 22,
    "activities": 17,
    "pending": 2
  },
  "records": [
    {
      "key": "US|protected_activity|title_vii_opposition",
      "law_key": "protected_activity",
      "law_id": "title_vii",
      "law": "Title VII of the Civil Rights Act of 1964, section 704(a)",
      "activity": "opposed_discrimination",
      "protects": "An employer may not discriminate against an employee or applicant for employment because he or she has opposed any practice made an unlawful employment practice by Title VII.",
      "rule": null,
      "covers": "Employers, employment agencies, labor organizations, and joint labor-management committees controlling apprenticeship or other training programs.",
      "in_law_words": true,
      "citation": {
        "law": "42 U.S.C. 2000e-3(a)",
        "url": "https://www.govinfo.gov/link/uscode/42/2000e-3?link-type=html",
        "quote": "It shall be an unlawful employment practice for an employer to discriminate against any of his employees or applicants for employment, for an employment agency, or joint labor-management committee controlling apprenticeship or other training or retraining, including on-the-job training programs, to discriminate against any individual, or for a labor organization to discriminate against any member thereof or applicant for membership, because he has opposed any practice made an unlawful employment practice by this subchapter",
        "label": "42 U.S.C. 2000e-3(a)",
        "kind": "statute",
        "archived": null
      },
      "second_source": {
        "law": "EEOC Enforcement Guidance on Retaliation and Related Issues",
        "url": "https://www.eeoc.gov/laws/guidance/enforcement-guidance-retaliation-and-related-issues",
        "quote": "In addition to participation, an individual is protected from retaliation for opposing any practice made unlawful under the EEO laws.",
        "label": "EEOC Enforcement Guidance on Retaliation and Related Issues",
        "kind": "agency",
        "archived": null
      },
      "extra_quotes": [],
      "source_url": "https://www.govinfo.gov/link/uscode/42/2000e-3?link-type=html",
      "second_source_url": "https://www.eeoc.gov/laws/guidance/enforcement-guidance-retaliation-and-related-issues",
      "verified_at": "2026-09-29",
      "status": "verified"
    }
  ],
  "scope_records": [
    {
      "key": "US|exclusion|nlra_supervisors",
      "law_key": "exclusion",
      "law_id": "nlra",
      "law": "National Labor Relations Act, section 2(3) and 2(11)",
      "activity": null,
      "protects": null,
      "rule": "The NLRA's definition of employee does not include any individual employed as a supervisor, so the rights it gives employees do not extend to supervisors.",
      "covers": "Individuals employed as supervisors, among others listed in the definition.",
      "in_law_words": true,
      "citation": {
        "law": "29 U.S.C. 152(3)",
        "url": "https://www.govinfo.gov/link/uscode/29/152?link-type=html",
        "quote": "but shall not include any individual employed as an agricultural laborer, or in the domestic service of any family or person at his home, or any individual employed by his parent or spouse, or any individual having the status of an independent contractor, or any individual employed as a supervisor",
        "label": "29 U.S.C. 152(3)",
        "kind": "statute",
        "archived": null
      },
      "second_source": {
        "law": "EEOC Enforcement Guidance on Retaliation and Related Issues",
        "url": "https://www.eeoc.gov/laws/guidance/enforcement-guidance-retaliation-and-related-issues",
        "quote": "The NLRA protection, however, does not extend to supervisors, managers, agricultural workers, and employees of rail and air carriers.",
        "label": "EEOC Enforcement Guidance on Retaliation and Related Issues",
        "kind": "agency",
        "archived": null
      },
      "extra_quotes": [
        {
          "law": "29 U.S.C. 152(11)",
          "url": "https://www.govinfo.gov/link/uscode/29/152?link-type=html",
          "quote": "The term \"supervisor\" means any individual having authority, in the interest of the employer, to hire, transfer, suspend, lay off, recall, promote, discharge, assign, reward, or discipline other employees, or responsibly to direct them, or to adjust their grievances, or effectively to recommend such action, if in connection with the foregoing the exercise of such authority is not of a merely routine or clerical nature, but requires the use of independent judgment.",
          "label": "29 U.S.C. 152(11)",
          "kind": "statute",
          "archived": null
        }
      ],
      "source_url": "https://www.govinfo.gov/link/uscode/29/152?link-type=html",
      "second_source_url": "https://www.eeoc.gov/laws/guidance/enforcement-guidance-retaliation-and-related-issues",
      "verified_at": "2026-09-29",
      "status": "verified"
    }
  ],
  "pending": [
    {
      "key": "US|protected_activity|nlra_charge_testimony",
      "law_key": "protected_activity",
      "law_id": "nlra",
      "activity": "nlrb_charge_testimony",
      "status": "no_verified_answer",
      "message": "No verified answer. Check the official source.",
      "draft_official_url": "https://www.govinfo.gov/link/uscode/29/158?link-type=html",
      "draft_official_label": "29 U.S.C. 158(a)(4)"
    }
  ]
}

/api/v1/conversation/eeoc-charges.json

Charges filed with the EEOC, copied from its Tables E1a and E1b: the national Total Charges and retaliation charges for each fiscal year (FY 1997 to FY 2025), the national count for every basis in FY 2025, and the same counts for 61 states, territories and other EEOC jurisdictions in FY 2025. A charge can name several bases, so bases never add up to the total. A cell the EEOC suppressed or left blank is null with its flag. Official source: EEOC Table E1a (XLSX). Example file: /api/v1/conversation/eeoc-charges.json.

Example: conversation/eeoc-charges.json
{
  "name": "EEOC charge receipts by basis: national and by state (Tables E1a and E1b)",
  "page_url": "https://interobservers.com/desk/templates/difficult-conversation-script/",
  "api_url": "https://interobservers.com/api/v1/conversation/eeoc-charges.json",
  "source": "U.S. Equal Employment Opportunity Commission",
  "source_url": "https://www.eeoc.gov/sites/default/files/2026-04/Table_E1a._Charge_Receipts_by_Basis_or_Statute_%28All_Statutes%29_FY_1997_-_FY_2025_0.xlsx",
  "source_urls": [
    "https://www.eeoc.gov/sites/default/files/2026-04/Table_E1a._Charge_Receipts_by_Basis_or_Statute_%28All_Statutes%29_FY_1997_-_FY_2025_0.xlsx"
  ],
  "verified_at": "2026-09-29",
  "retrieved_on": "2026-09-29",
  "tables": [
    "Table E1a. Charge Receipts by Basis or Statute (All Statutes) FY 1997 - FY 2025",
    "Table E1b. Charge Receipts, by State (includes U.S. Territories) and Basis or Statute (All Statutes), FY 2009 - FY 2025"
  ],
  "unit": "charges (count of charge receipts)",
  "latest_fy": 2025,
  "period": {
    "national": "FY 1997 to FY 2025",
    "jurisdictions": "FY 2025"
  },
  "multi_basis_note": {
    "quote": "Data includes all charges filed under the above referenced statute, basis, or issue, as well as those filed concurrently under other statutes, bases, or issues enforced by the EEOC. Therefore, the sum of data across statutes, bases, or issues will exceed actual totals.",
    "source": "Tables E1a, E1b and E1f (file note)",
    "source_url": "https://www.eeoc.gov/sites/default/files/2026-04/Table_E1a._Charge_Receipts_by_Basis_or_Statute_%28All_Statutes%29_FY_1997_-_FY_2025_0.xlsx"
  },
  "file_notes": [
    "*Cell suppressed"
  ],
  "note": "Counts copied from the EEOC tables. A charge can name several bases, so bases are never added up and the share of a basis is that basis divided by the Total Charges of the same row. A null value is a cell the EEOC printed as suppressed (\"*Cell suppressed\", no threshold stated by the EEOC) or left blank; its flag says which; it is never estimated. Jurisdiction rows are the EEOC's own rows; use each row as published (in FY 2025 the published jurisdiction totals do not add up to the Total row of Table E1b, so do not sum them). verified_at is the date the EEOC files were downloaded and checked.",
  "bases": [
    {
      "key": "race",
      "label": "Race"
    }
  ],
  "national": {
    "fy": 2025,
    "total_charges": 88201,
    "bases": {
      "race": 29338,
      "sex": 26941,
      "national_origin": 7856,
      "religion": 3710,
      "color": 6738,
      "retaliation_all_statutes": 54350,
      "retaliation_title_vii": 36082,
      "age": 16353,
      "disability": 36256,
      "equal_pay_act": 928,
      "gina": 449,
      "pwfa": 3448
    },
    "source_url": "https://www.eeoc.gov/sites/default/files/2026-04/Table_E1a._Charge_Receipts_by_Basis_or_Statute_%28All_Statutes%29_FY_1997_-_FY_2025_0.xlsx",
    "verified_at": "2026-09-29",
    "series": [
      {
        "fy": 2025,
        "total_charges": 88201,
        "retaliation_all_statutes": 54350
      }
    ]
  },
  "counts": {
    "fiscal_years_national": 29,
    "jurisdictions": 61,
    "jurisdictions_with_total": 55
  },
  "jurisdictions": [
    {
      "code": "AK",
      "name": "Alaska",
      "kind": "state",
      "fy": 2025,
      "total_charges": 83,
      "bases": {
        "race": 33,
        "sex": 33,
        "national_origin": 10,
        "religion": 3,
        "color": 8,
        "retaliation_all_statutes": 56,
        "retaliation_title_vii": 40,
        "age": 28,
        "disability": 37,
        "equal_pay_act": null,
        "gina": null,
        "pwfa": null
      },
      "flags": {
        "equal_pay_act": "suppressed",
        "gina": "suppressed",
        "pwfa": "suppressed"
      },
      "source_url": "https://www.eeoc.gov/sites/default/files/2026-04/Table_E1b._Charge_Receipts_by_State_%28includes_U.S._Territories%29_and_Basis_or_Statute_%28All_Statutes%29_FY_2009_-_FY_2025_suppressed_0.xlsx",
      "verified_at": "2026-09-29"
    }
  ]
}

/api/v1/conversation/nlrb-charges.json

Unfair labor practice charges filed with the NLRB in each fiscal year (FY 2021 to FY 2025), national totals only, each copied from the sentence quoted from that year's own NLRB report, whose official address is in the item's source_url and source_cite. The totals count charges against employers and against unions together. Where the report was read from an Internet Archive copy of the official address, via_internet_archive gives the date of that copy. Official source: NLRB Performance and Accountability Report, FY 2025 (the latest year; every year's item links its own report). Example file: /api/v1/conversation/nlrb-charges.json.

Example: conversation/nlrb-charges.json
{
  "name": "NLRB unfair labor practice charges filed per fiscal year, national",
  "page_url": "https://interobservers.com/desk/templates/difficult-conversation-script/",
  "api_url": "https://interobservers.com/api/v1/conversation/nlrb-charges.json",
  "source": "National Labor Relations Board, Performance and Accountability Reports (one report per fiscal year: see source_url and source_cite of each series item)",
  "source_url": "https://www.nlrb.gov/sites/default/files/attachments/pages/node-130/nlrb-fy2025-par.pdf",
  "source_urls": [
    "https://www.nlrb.gov/sites/default/files/attachments/pages/node-130/nlrb-fy-2021-par-final_508.pdf",
    "https://www.nlrb.gov/sites/default/files/attachments/pages/node-130/nlrb-fy2022-par-508.pdf",
    "https://www.nlrb.gov/sites/default/files/attachments/pages/node-130/nlrb-fy2023-par-508.pdf",
    "https://www.nlrb.gov/sites/default/files/attachments/pages/node-130/nlrb_fy2024_par_508.pdf",
    "https://www.nlrb.gov/sites/default/files/attachments/pages/node-130/nlrb-fy2025-par.pdf"
  ],
  "verified_at": "2026-09-29",
  "retrieved_on": "2026-09-29",
  "unit": "charges (count)",
  "latest_fy": 2025,
  "period": "FY 2021 to FY 2025",
  "scope_note": "National totals of all ULP charges filed with the NLRB by the public (employees, unions, employers). The total covers charges against employers AND against unions; it is not the number of charges against employers only.",
  "caveat": "A charge is an allegation filed with the NLRB, not a finding. Charge counts show how many charges were filed; they are not a measure of how common violations are.",
  "access_note": "Each report was read from an Internet Archive snapshot of the official NLRB address, taken at most 90 days before we retrieved it, because the NLRB website did not answer from our build server; source_url is the official address and via_internet_archive gives the snapshot date.",
  "by_filing_party": {
    "available": false,
    "reason": "The NLRB reports used here give the national total only, so charges against employers (CA) and against unions (CB) are not split and there are no state figures."
  },
  "note": "Each fiscal year is copied from the sentence quoted (source_quote) from that year's own report (source_url, source_cite); the top-level source_url is the latest report. National totals only. Charge counts show how many charges were filed; they are not findings and not a measure of how common violations are.",
  "counts": {
    "fiscal_years": 5
  },
  "series": [
    {
      "fy": 2025,
      "ulp_charges_filed": 19754,
      "label_as_printed": "ULP charges",
      "source_title": "NLRB PAR FY2025",
      "source_url": "https://www.nlrb.gov/sites/default/files/attachments/pages/node-130/nlrb-fy2025-par.pdf",
      "source_cite": "NLRB Performance and Accountability Report, FY 2025 (official address; read via Internet Archive snapshot of 2026-09-10)",
      "source_quote": "During FY 2025, the public filed 19,754 ULP charges, containing one or more allegations of unlawful conduct, of which 32.8 percent were found to have merit",
      "via_internet_archive": "via Internet Archive snapshot of 2026-09-10",
      "verified_at": "2026-09-29"
    }
  ]
}

Performance data

The job content behind the performance review builder: 923 occupations from the O*NET® 31.0 Database (August 2026), with up to 10 core tasks, 8 skills and 8 work activities each and the O*NET importance, level and relevance values, selected and ranked by InterObservers (core tasks by importance; skills and work activities by importance, then level). 910 occupations have core tasks, 910 have skills and 911 have work activities. Values are copied as published; nothing is estimated. The rating scale in the index file is InterObservers' own wording, not part of the O*NET database and not a validated assessment instrument. Data status: O*NET 31.0 Database (August 2026), latest release as checked Sep 29, 2026.

The same data, readable without code, in the performance review template for any job.

/api/v1/performance/index.json

Where to start for the Performance data: the O*NET® 31.0 Database source, release and the date we last checked for a newer release (verified_at), the license terms and the two credit lines, counts, the per-occupation limits and ranking rule, the O*NET scales, the InterObservers rating scale (labeled as ours) and the list of 923 occupations with the URL of each file. Data source: O*NET® 31.0 Database (O*NET Resource Center). Example file: /api/v1/performance/index.json.

Example: performance/index.json
{
  "name": "InterObservers Performance Desk data: O*NET core tasks, skills and work activities by occupation",
  "api_url": "https://interobservers.com/api/v1/performance/index.json",
  "page_url": "https://interobservers.com/performance-review/",
  "description": "923 occupations from the O*NET® 31.0 Database, with up to 10 core tasks, up to 8 skills and up to 8 work activities each, with the O*NET importance, level and relevance values, the job zone and the related occupations. 910 occupations have core tasks, 910 have skills and 911 have work activities; where a list is empty, the occupation file says why. The selection used by the InterObservers performance review builder.",
  "source": "O*NET® 31.0 Database (August 2026), U.S. Department of Labor, Employment and Training Administration (USDOL/ETA)",
  "source_url": "https://www.onetcenter.org/database.html",
  "onet_version": "O*NET 31.0",
  "onet_release": "August 2026",
  "verified_at": "2026-09-29",
  "data_status": "O*NET 31.0 Database (August 2026), latest release as checked Sep 29, 2026",
  "release_check": {
    "checked_at": "2026-09-29",
    "current": true,
    "max_age_days": 45,
    "note": "verified_at is the date we last checked the O*NET database page for a newer release. The data is labeled current only while that check found no newer release and is at most 45 days old."
  },
  "counts": {
    "occupations": 923,
    "with_core_tasks": 910,
    "with_skills": 910,
    "with_work_activities": 911,
    "without_task_ratings": 12,
    "empty_task_lists": 13,
    "without_skills": 13,
    "without_work_activities": 12,
    "job_zones": {
      "2": 337,
      "3": 208,
      "4": 226,
      "5": 152
    },
    "elements": 76,
    "tasks_published": 8645,
    "skills_published": 7280,
    "work_activities_published": 7288,
    "related_pairs": 18460
  },
  "limits": {
    "tasks": 10,
    "skills": 8,
    "work_activities": 8
  },
  "ranking": "Core tasks: Task Type = Core, ordered by Task Ratings IM desc, ties by Task ID asc. Skills and work activities: IM desc, ties by LV desc (null last), then Element ID asc. Values verbatim (2 decimals as published).",
  "exclusion_rules": "IM Recommend Suppress = Y: item excluded. Not Relevant = Y: element excluded for that occupation. LV / RT Recommend Suppress = Y: that value is null. Occupations without any task, rating, job zone or related-occupation row are not published.",
  "exclusion_counts": {
    "task_statements_without_task_type": 186,
    "core_task_relevance_suppressed_null": 29
  },
  "occupations_without_data": 93,
  "scales": {
    "importance": {
      "scale_id": "IM",
      "name": "Importance",
      "min": 1,
      "max": 5
    },
    "level": {
      "scale_id": "LV",
      "name": "Level",
      "min": 0,
      "max": 7
    },
    "relevance": {
      "scale_id": "RT",
      "name": "Relevance of Task",
      "min": 0,
      "max": 100
    }
  },
  "rating_scale": {
    "by": "InterObservers",
    "levels": [
      {
        "id": "exceeds",
        "level": 5,
        "label": "Exceeds expectations",
        "definition": "Work on this item is consistently well beyond what the role requires and raises the standard for others."
      }
    ],
    "note": "The 5-level rating scale and the phrases in the builder are InterObservers' own wording. They are not part of the O*NET database and are not a validated assessment instrument."
  },
  "elements": {
    "2.A.1.a": {
      "name": "Reading Comprehension",
      "description": "Understanding written sentences and paragraphs in work-related documents.",
      "kind": "essential"
    }
  },
  "occupations": [
    {
      "code": "11-1011.00",
      "title": "Chief Executives",
      "job_zone": 5,
      "api_url": "https://interobservers.com/api/v1/performance/occupations/11-1011.00.json",
      "builder_url": "https://interobservers.com/performance-review/?occ=11-1011.00"
    }
  ],
  "note": "Selected and ranked by InterObservers from the O*NET® 31.0 Database; values verbatim. Credit the O*NET database with onet_attribution_modified (we select, rank and add our own rating levels) or with onet_attribution when you use the O*NET text unchanged. O*NET® is a trademark of USDOL/ETA.",
  "occupation_files": {
    "path": "/api/v1/performance/occupations/{code}.json",
    "files": 923,
    "bytes_total": 9974619
  }
}

/api/v1/performance/occupations/{code}.json

One occupation per file (923 files; {code} is the O*NET-SOC code, for example 11-1011.00): up to 10 core tasks with importance and relevance, up to 8 skills and up to 8 work activities with importance and level, as published in the O*NET database, the job zone, the related occupations and builder_url, the review builder opened on this job. Some lists are empty: tasks for 13 occupations (12 with no task ratings in the O*NET database, 1 whose rated tasks include no core task), skills for 13 and work_activities for 12. Each of those files says why in tasks_note, skills_note or work_activities_note. Data source: O*NET® 31.0 Database (O*NET Resource Center). Example file: /api/v1/performance/occupations/11-1011.00.json.

Example: performance/occupations/11-1011.00.json
{
  "name": "Chief Executives (11-1011.00): core tasks, skills and work activities from the O*NET® 31.0 Database",
  "code": "11-1011.00",
  "title": "Chief Executives",
  "description": "Determine and formulate policies and provide overall direction of companies or private and public sector organizations within guidelines set up by a board of directors or similar governing body. Plan, direct, or coordinate operational activities at the highest level of management with the help of subordinate executives and staff managers.",
  "job_zone": 5,
  "job_zone_name": "Job Zone Five: Extensive Preparation Needed",
  "api_url": "https://interobservers.com/api/v1/performance/occupations/11-1011.00.json",
  "builder_url": "https://interobservers.com/performance-review/?occ=11-1011.00",
  "source": "O*NET® 31.0 Database (August 2026), U.S. Department of Labor, Employment and Training Administration (USDOL/ETA)",
  "source_url": "https://www.onetcenter.org/database.html",
  "onet_version": "O*NET 31.0",
  "onet_release": "August 2026",
  "verified_at": "2026-09-29",
  "task_ratings": true,
  "tasks": [
    {
      "task_id": 8823,
      "task": "Direct or coordinate an organization's financial or budget activities to fund operations, maximize investments, or increase efficiency.",
      "importance": 4.52,
      "relevance": 74.44
    }
  ],
  "tasks_core_total": 20,
  "tasks_note": null,
  "skills": [
    {
      "element_id": "2.B.4.e",
      "name": "Judgment and Decision Making",
      "kind": "transferable",
      "importance": 4.75,
      "level": 5.38
    }
  ],
  "skills_rated_total": 31,
  "skills_note": null,
  "work_activities": [
    {
      "element_id": "4.A.2.b.1",
      "name": "Making Decisions and Solving Problems",
      "importance": 4.85,
      "level": 6
    }
  ],
  "work_activities_rated_total": 40,
  "work_activities_note": null,
  "related_occupations": [
    {
      "code": "11-1021.00",
      "title": "General and Operations Managers",
      "tier": "Primary-Short",
      "index": 1,
      "api_url": "https://interobservers.com/api/v1/performance/occupations/11-1021.00.json"
    }
  ],
  "scales": {
    "importance": {
      "scale_id": "IM",
      "name": "Importance",
      "min": 1,
      "max": 5
    },
    "level": {
      "scale_id": "LV",
      "name": "Level",
      "min": 0,
      "max": 7
    },
    "relevance": {
      "scale_id": "RT",
      "name": "Relevance of Task",
      "min": 0,
      "max": 100
    }
  },
  "note": "Values are copied from the O*NET® 31.0 Database as published (2 decimals). tasks are the occupation's core tasks (O*NET task type Core), up to 10, ordered by importance; skills (Essential and Transferable Skills) and work_activities are up to 8 and 8, by importance, ties by level, then element ID. An item whose importance is flagged for suppression in the O*NET data, or marked not relevant for the occupation, is left out; a level or relevance value flagged for suppression is null. A list can be empty: tasks_note, skills_note and work_activities_note say why (null when the list has items). The totals (tasks_core_total, skills_rated_total, work_activities_rated_total) count the rated items before the cap. builder_url opens the InterObservers performance review builder with this occupation."
}

/api/v1/performance/self-evaluation.json: the first person sentences of the self evaluation template (380 sentences for the 76 O*NET skills and work activities, 15 for any task, the prompts and examples of each written section), with source_url and verified_at of the O*NET data.

Occupation file fields

FieldMeaning
tasks[].task_id, taskO*NET task ID and the task statement, word for word.
tasks[].importance, relevanceImportance (1 to 5) and relevance (percent of respondents, 0 to 100), as published; null when the O*NET data flags the value for suppression.
skills[], work_activities[]element_id and name from the O*NET Content Model, importance (1 to 5) and level (0 to 7); skills also carry kind (essential or transferable).
job_zone, job_zone_nameO*NET Job Zone (preparation needed) and its name.
tasks_note, skills_note, work_activities_notenull when the list has items; when the list is empty, why (for example, no task ratings in the O*NET database for this occupation).
related_occupations[]Related occupations with the O*NET relatedness tier and order; api_url is null when that occupation has no file here.
source_url, verified_atThe O*NET database page, and the date we last checked it for a newer release.
builder_urlThe performance review builder opened on this occupation.

O*NET license and credit

The O*NET content is licensed by USDOL/ETA under the CC BY 4.0 license (O*NET license terms), not by InterObservers. When you use these files, show the credit line from onet_attribution_modified, because the selection and ranking are ours:

This page includes information from the O*NET 31.0 Database by the U.S. Department of Labor, Employment and Training Administration (USDOL/ETA). Used under the CC BY 4.0 license. O*NET® is a trademark of USDOL/ETA. InterObservers has modified all or some of this information. USDOL/ETA has not approved, endorsed, or tested these modifications.

If you use O*NET text unchanged, the shorter line in onet_attribution applies. Keep the version number (O*NET 31.0) in the credit.

Meeting data

The libraries behind the Meeting Desk and the facts of The Daily Huddle. The icebreaker questions, activities and agendas are InterObservers editorial wording, each item with the tags the pages filter on. The Daily Huddle facts are computed from the Employer Desk's verified state rules and from official data (BLS Occupational Employment and Wage Statistics, May 2025; BLS Occupational Employment and Wage Statistics, state estimates, May 2025; U.S. Census Bureau, County Business Patterns 2023; BLS Business Employment Dynamics, Establishment Age and Survival; EEOC Enforcement and Litigation Statistics, charge receipts); each fact carries its own source and the date that source was checked, and the whole bank is re-derived from the raw files before it is published. Data status: Facts re-derived from the stored official files on October 8, 2026.

The same content, readable without code: icebreaker questions, team building activities, The Daily Huddle, meeting agenda template.

/api/v1/meeting/index.json

Where to start for the Meeting data: the list of files with their counts, the Meeting pages, the official sources of the Daily Huddle facts and the date the facts were last checked (verified_at). Example file: /api/v1/meeting/index.json.

Example: meeting/index.json
{
  "name": "InterObservers Meeting Desk data",
  "api_url": "https://interobservers.com/api/v1/meeting/index.json",
  "description": "Pick icebreaker questions and team activities for your group, run a daily team quiz built on official labor data, and write a meeting agenda with its cost.",
  "pages": {
    "icebreakers": "https://interobservers.com/icebreaker-ideas/",
    "activities": "https://interobservers.com/desk/tools/team-building-activities/",
    "huddle": "https://interobservers.com/desk/huddle/",
    "agenda": "https://interobservers.com/meeting-agenda/"
  },
  "files": [
    {
      "path": "/api/v1/meeting/icebreakers.json",
      "url": "https://interobservers.com/api/v1/meeting/icebreakers.json",
      "items": 386,
      "description": "386 icebreaker questions with their tags (type, depth, remote or in person, group size, audience, meeting type). InterObservers editorial wording."
    }
  ],
  "counts": {
    "icebreakers": 386,
    "activities": 85,
    "agendas": 10,
    "polls": 145,
    "huddle_facts": 236,
    "huddle_facts_national": 78,
    "huddle_facts_state": 158,
    "huddle_fact_states": 51,
    "huddle_fact_sources": 6
  },
  "data_status": "Facts re-derived from the stored official files on October 8, 2026",
  "verified_at": "2026-10-08",
  "live_check": {
    "status": "Facts re-derived from the stored official files on October 8, 2026",
    "date": "2026-10-08",
    "facts_left_out": 0
  },
  "source_url": "https://www.bls.gov/news.release/ocwage.nr0.htm",
  "fact_source_groups": {
    "datasets": 5,
    "state_rules": true,
    "total": 6,
    "note": "huddle_fact_sources counts the source groups: 5 datasets (listed in sources) and the Employer Desk state rules, where each fact cites its own official source."
  },
  "sources": [
    {
      "label": "BLS Occupational Employment and Wage Statistics, May 2025",
      "url": "https://www.bls.gov/news.release/ocwage.nr0.htm",
      "period": "May 2025",
      "verified_at": "2026-09-28"
    }
  ],
  "note": "The question, activity and agenda libraries are InterObservers editorial wording. The Daily Huddle facts are computed from official data and re-checked against the raw files before publishing. verified_at is the date of the last successful check of the whole fact bank."
}

/api/v1/meeting/icebreakers.json

386 icebreaker questions, each with its tags: type, depth, remote or in person, group size, audience and meeting type. InterObservers editorial wording. Example file: /api/v1/meeting/icebreakers.json.

Example: meeting/icebreakers.json
{
  "name": "Icebreaker questions for team meetings, with tags",
  "api_url": "https://interobservers.com/api/v1/meeting/icebreakers.json",
  "page_url": "https://interobservers.com/icebreaker-ideas/",
  "attribution_of_text": {
    "by": "InterObservers",
    "wording": "InterObservers editorial wording",
    "note": "Written and checked by the InterObservers editorial team (work-safe, no questions about sensitive personal traits, US spelling, no duplicates). Credit InterObservers with a link to the page_url when you reuse the text."
  },
  "updated": "2026-09-29",
  "counts": {
    "items": 386
  },
  "tags": {
    "kind": "Type of question",
    "depth": "light, medium or deeper",
    "settings": "remote and/or in_person",
    "sizes": "small, medium and/or large group",
    "audiences": "who it suits",
    "meetings": "meeting types it suits",
    "minutes_per_person": "rough answer time per person, in minutes",
    "funny": "true for the lighter, humorous questions"
  },
  "items": [
    {
      "id": "ib-0001",
      "text": "Would you rather have every meeting run ten minutes shorter or get one meeting-free day each week?",
      "kind": "would_you_rather",
      "depth": "light",
      "settings": [
        "remote",
        "in_person"
      ],
      "sizes": [
        "small",
        "medium",
        "large"
      ],
      "audiences": [
        "existing_team",
        "new_hires",
        "cross_team"
      ],
      "meetings": [
        "weekly",
        "social",
        "all_hands",
        "training",
        "kickoff"
      ],
      "minutes_per_person": 0.5,
      "funny": false
    }
  ]
}

/api/v1/meeting/activities.json

85 team building activities with group size, time in minutes, setting, preparation, materials and steps. InterObservers editorial wording. Example file: /api/v1/meeting/activities.json.

Example: meeting/activities.json
{
  "name": "Team building activities with group size, time, setting, steps and materials",
  "api_url": "https://interobservers.com/api/v1/meeting/activities.json",
  "page_url": "https://interobservers.com/desk/tools/team-building-activities/",
  "attribution_of_text": {
    "by": "InterObservers",
    "wording": "InterObservers editorial wording",
    "note": "Written and checked by the InterObservers editorial team (work-safe, no questions about sensitive personal traits, US spelling, no duplicates). Credit InterObservers with a link to the page_url when you reuse the text."
  },
  "updated": "2026-09-29",
  "counts": {
    "items": 85
  },
  "fields": {
    "setting": "remote, in_person or both",
    "min_people": "smallest group",
    "max_people": "largest group (null = no upper limit)",
    "minutes_min": "shortest run time in minutes",
    "minutes_max": "longest run time in minutes",
    "prep": "preparation needed",
    "cost": "free or the kind of cost"
  },
  "items": [
    {
      "id": "act-0001",
      "name": "Two Truths and a Tale",
      "summary": "Each person shares three short statements about their work life or hobbies, and the group guesses which one is made up.",
      "steps": [
        "Give everyone 2 minutes to write three statements, one of them invented.",
        "Take turns reading the statements aloud or posting them in chat.",
        "Let the group vote on the made-up one.",
        "Reveal the answer and invite a one-line story behind the true ones."
      ],
      "setting": "both",
      "min_people": 3,
      "max_people": 30,
      "minutes_min": 10,
      "minutes_max": 20,
      "prep": "none",
      "materials": [],
      "cost": "free",
      "goals": [
        "bonding",
        "communication"
      ],
      "energy": "calm",
      "kind": "icebreaker_game",
      "accessibility": "Statements can be typed in chat or read by the facilitator, so nobody has to speak if they prefer not to."
    }
  ]
}

/api/v1/meeting/agendas.json

10 meeting agenda templates with sections, minutes per section and prompts. InterObservers editorial wording. Example file: /api/v1/meeting/agendas.json.

Example: meeting/agendas.json
{
  "name": "Meeting agenda templates with sections and timings",
  "api_url": "https://interobservers.com/api/v1/meeting/agendas.json",
  "page_url": "https://interobservers.com/meeting-agenda/",
  "attribution_of_text": {
    "by": "InterObservers",
    "wording": "InterObservers editorial wording",
    "note": "Written and checked by the InterObservers editorial team (work-safe, no questions about sensitive personal traits, US spelling, no duplicates). Credit InterObservers with a link to the page_url when you reuse the text."
  },
  "updated": "2026-09-29",
  "counts": {
    "items": 10
  },
  "fields": {
    "default_minutes": "suggested meeting length in minutes",
    "sections": "agenda items in order, each with minutes, a suggested owner and prompts"
  },
  "items": [
    {
      "id": "weekly-team-meeting",
      "name": "Weekly team meeting",
      "meeting_label": "Weekly team meeting",
      "default_minutes": 45,
      "purpose": "Review last week, agree on this week's priorities and remove blockers.",
      "sections": [
        {
          "title": "Warm-up question",
          "minutes": 5,
          "owner_hint": "Meeting lead",
          "prompts": [
            "One quick question for everyone",
            "Pass is always fine"
          ]
        }
      ],
      "tips": [
        "Send the agenda the day before so people come with updates ready.",
        "Keep status updates short and spend most of the time on decisions and blockers.",
        "End with a spoken recap of actions and owners so nothing gets lost."
      ],
      "before": [
        "Share the agenda and ask for extra topics.",
        "Ask everyone to update the task board."
      ],
      "after": [
        "Send a short summary with actions, owners and due dates.",
        "Move any open question to the next agenda."
      ]
    }
  ]
}

/api/v1/meeting/huddle-facts.json

236 Daily Huddle work facts (78 national, 158 for 50 states and DC). Each gives the question, the four options, the correct answer as text, a one-sentence explanation, the official source (label, address and period), verified_at and valid_until: for a state rule fact, the last day it is known to be true (the day before a scheduled change of that rule, or the end of the Employer Desk publish window; The Daily Huddle stops playing it before that day), null for the other facts. 5 facts carry one in this build. Each fact names its own source; sources[] lists the 5 datasets of the file; a state rule fact names its own official source. Example file: /api/v1/meeting/huddle-facts.json.

Example: meeting/huddle-facts.json
{
  "name": "The Daily Huddle facts: work and labor facts with the answer and the official source",
  "api_url": "https://interobservers.com/api/v1/meeting/huddle-facts.json",
  "page_url": "https://interobservers.com/desk/huddle/",
  "description": "236 multiple-choice facts about work in the United States (78 national, 158 for 50 states and DC), computed from the Employer Desk's verified state rules, BLS Occupational Employment and Wage Statistics, Census County Business Patterns, BLS Business Employment Dynamics and EEOC charge statistics. Each fact gives the correct answer as text, a one-sentence explanation, its official source and the date the source was checked.",
  "data_status": "Facts re-derived from the stored official files on October 8, 2026",
  "checked_at": "2026-10-08",
  "live_check": {
    "status": "Facts re-derived from the stored official files on October 8, 2026",
    "date": "2026-10-08",
    "facts_left_out": 0
  },
  "note": "answer is the correct option, as text. verified_at is the date the source record was last checked (a state rule) or the date the dataset was retrieved and checked. valid_until (state rule facts, else null) is the last day the fact is known to be true: the day before a scheduled change of that rule, or the end of the Employer Desk publish window; the Huddle never plays a fact on or after that day. Every fact is re-derived from the raw official files before it is published; a fact whose data changes is rebuilt, never edited by hand. Quiz wording is InterObservers editorial wording; the figures are the agencies'.",
  "sources": [
    {
      "label": "BLS Occupational Employment and Wage Statistics, May 2025",
      "url": "https://www.bls.gov/news.release/ocwage.nr0.htm",
      "period": "May 2025",
      "verified_at": "2026-09-28"
    }
  ],
  "counts": {
    "facts": 236,
    "national": 78,
    "state": 158,
    "states": 51
  },
  "facts": [
    {
      "id": "bed5-us-10",
      "kind": "bed5-sector",
      "scope": "national",
      "state": null,
      "question": "What share of U.S. private establishments opened in the year to March 2020 were still open 5 years later?",
      "options": [
        "53.8%",
        "48.5%",
        "58.4%",
        "51.4%"
      ],
      "answer": "51.4%",
      "explain": "51.4% of U.S. private establishments that opened in the year ended March 2020 were still open in March 2025.",
      "difficulty": "medium",
      "source": {
        "label": "BLS Business Employment Dynamics, Establishment Age and Survival",
        "url": "https://www.bls.gov/bdm/us_age_naics_00_table7.txt",
        "period": "data through March 2025"
      },
      "verified_at": "2026-09-28",
      "valid_until": null
    }
  ]
}

Pay data

The numbers behind the Pay Desk paycheck calculators for tax year 2026: federal income tax withholding, Social Security and Medicare, the federal and state unemployment taxes the employer pays, and each covered state's withholding method. Every number in the files appears in a verbatim quote from the official document it comes from; rates, amounts, tables and wage bases are also stated by a second, different official document, and a fact that rests on one document says so. Oldest check date across the files: 2026-07-05.

The same numbers at work, readable without code: hourly to salary calculator, Texas paycheck calculator, California paycheck calculator, Florida paycheck calculator.

/api/v1/money-pay/index.json

Where to start for the Pay data: the files, the 17 states covered with their calculator page, and verified_at (the oldest check date of the files listed). Example file: /api/v1/money-pay/index.json.

Example: money-pay/index.json
{
  "name": "InterObservers Pay Desk data",
  "api_url": "https://interobservers.com/api/v1/money-pay/index.json",
  "description": "Paycheck calculators for each state that show take-home pay and the full employer cost, from the official IRS and state withholding rules, plus an hourly to salary converter.",
  "tax_year": 2026,
  "pages": {
    "hub": "https://interobservers.com/desk/money-pay/",
    "converter": "https://interobservers.com/desk/tools/hourly-to-salary-calculator/",
    "states": {
      "TX": "https://interobservers.com/desk/tools/texas-paycheck-calculator/"
    }
  },
  "files": [
    {
      "path": "/api/v1/money-pay/federal-2026.json",
      "url": "https://interobservers.com/api/v1/money-pay/federal-2026.json",
      "description": "Federal withholding (IRS Publication 15-T 2026, Worksheet 1A), Social Security and Medicare, FUTA: the numbers, 36 facts with their verbatim official quotes, second sources and verified_at."
    }
  ],
  "states": [
    {
      "state": "TX",
      "name": "Texas",
      "api_url": "https://interobservers.com/api/v1/money-pay/states/tx.json",
      "page_url": "https://interobservers.com/desk/tools/texas-paycheck-calculator/",
      "has_income_tax": false,
      "verified_at": "2026-09-24"
    }
  ],
  "counts": {
    "states": 17,
    "federal_facts": 36,
    "state_facts": 245
  },
  "verified_at": "2026-07-05",
  "note": "Tax year 2026. Each file lists the official documents it is built from, with a verbatim quote for every number. verified_at of this index is the oldest verified_at of the files listed. A state is listed only when its data passes the automated check (quote found in the stored official document, number in both the first and the second source) and its worked cases pass."
}

/api/v1/money-pay/federal-2026.json

The federal numbers for tax year 2026: the IRS Publication 15-T percentage method tables (Worksheet 1A, Form W-4 from 2020 or later), Social Security and Medicare rates and the wage base, and FUTA. 36 facts, each with the verbatim quote of the official document, a second official document or a single-source label, and verified_at. Official source: Publication 15 (2026), (Circular E), Employer's Tax Guide. Example file: /api/v1/money-pay/federal-2026.json.

Example: money-pay/federal-2026.json
{
  "name": "Federal paycheck withholding and payroll taxes, tax year 2026 (Pay Desk)",
  "api_url": "https://interobservers.com/api/v1/money-pay/federal-2026.json",
  "page_url": "https://interobservers.com/desk/tools/hourly-to-salary-calculator/",
  "tax_year": 2026,
  "method": "IRS Pub 15-T (2026) Worksheet 1A, Percentage Method Tables for Automated Payroll Systems (Form W-4 from 2020 or later)",
  "agency": "Internal Revenue Service",
  "forms": {
    "withholding_certificate": "Form W-4"
  },
  "effective": {
    "date": "2026-01-01",
    "fact": "fed.p15t.for_use_in"
  },
  "verified_at": "2026-09-28",
  "params": {
    "fica": {
      "ss": {
        "rate_pct": 6.2,
        "wage_base": 184500
      },
      "medicare": {
        "rate_pct": 1.45,
        "addl_rate_pct": 0.9,
        "addl_threshold": 200000
      }
    }
  },
  "status_2027": {
    "tables_2027": "not published as of 2026-09-29",
    "note": "The only Pub 15-T draft posted at irs.gov/pub/irs-dft/p15t--dft.pdf (snapshot 2026-09-29) is the early release draft of the 2026 edition (\"For use in 2026\", dated Dec 3, 2025); no 2027 edition or draft is posted. The pages state tax year 2026."
  },
  "employer": {
    "futa": {
      "rate_pct": 6,
      "max_credit_pct": 5.4,
      "rate_after_credit_pct": 0.6,
      "wage_base": 7000,
      "source_url": "https://www.irs.gov/taxtopics/tc759"
    }
  },
  "note": "params are the numbers the Pay Desk calculators use (IRS Publication 15-T Worksheet 1A percentage method tables for Forms W-4 from 2020 or later; Social Security and Medicare rates and the wage base). Every number in params appears in the verbatim quote of a fact below. verified_at on each fact is the older of the two stored snapshot dates (first and second official document); verified_at of the file is the oldest of all.",
  "facts": [
    {
      "id": "fed.ss.wage_base",
      "label": "Social Security wage base for 2026",
      "value": 184500,
      "unit": "dollars",
      "fact_kind": "wage_base",
      "source": {
        "url": "https://www.irs.gov/publications/p15",
        "doc": "Publication 15 (2026), (Circular E), Employer's Tax Guide",
        "kind": "agency_guide",
        "quote": "For 2026, the social security tax rate is 6.2% (amount withheld) each for the employer and employee (12.4% total). The social security wage base limit is $184,500."
      },
      "second_source": {
        "url": "https://www.irs.gov/taxtopics/tc751",
        "doc": "Topic no. 751, Social Security and Medicare withholding rates",
        "kind": "agency_page",
        "quote": "For earnings in 2026, this base limit is $184,500.",
        "derived": null
      },
      "single_source": null,
      "verified_at": "2026-09-28"
    }
  ]
}

/api/v1/money-pay/states/tx.json

One file per state with a Pay Desk calculator (17 files, two-letter code in lowercase: tx, ca, fl, wi, oh, il, wa, ga, mi, tn, al, co, mo, az, ok, in, md): the state's withholding method and its effective date, the numbers the calculator uses, the inputs it asks, the employer's new-employer unemployment tax rate and wage base, and every fact with its official quote, second source and verified_at. Example file: /api/v1/money-pay/states/tx.json.

Example: money-pay/states/tx.json
{
  "name": "Texas paycheck withholding and payroll taxes, tax year 2026 (Pay Desk)",
  "api_url": "https://interobservers.com/api/v1/money-pay/states/tx.json",
  "page_url": "https://interobservers.com/desk/tools/texas-paycheck-calculator/",
  "state": "TX",
  "state_name": "Texas",
  "slug": "texas",
  "tax_year": 2026,
  "has_income_tax": false,
  "method": "No state income tax on wages: nothing withheld for the state",
  "agency": "Texas Comptroller of Public Accounts",
  "forms": {
    "withholding_certificate": "Form W-4"
  },
  "effective": {
    "date": "2026-01-01",
    "fact": "tx.no_income_tax"
  },
  "verified_at": "2026-09-24",
  "params": {},
  "inputs": [],
  "employer": {
    "suta": {
      "new_employer_rate_pct": 2.7,
      "wage_base": 9000,
      "source_url": "https://oui.doleta.gov/unemploy/content/sigpros/2020-2029/July2026.pdf",
      "effective": "2026-07"
    },
    "futa": {
      "rate_after_credit_pct": 0.6,
      "wage_base": 7000,
      "source_url": "https://www.irs.gov/taxtopics/tc759"
    }
  },
  "note": "params are the numbers the calculator uses for this state; every number appears in the verbatim quote of a fact below, and every rate, amount, table and wage base is stated by a second, different official document (second_source) or is marked single_source. The federal part is in federal-2026.json.",
  "facts": [
    {
      "id": "tx.no_income_tax",
      "label": "Texas levies no state or local income tax on individuals",
      "value": null,
      "unit": null,
      "fact_kind": "no_income_tax",
      "source": {
        "url": "https://comptroller.texas.gov/transparency/revenue/docs/96-1774.pdf",
        "doc": "Texas Comptroller of Public Accounts, Taxes of Texas: A Field Guide (December 2025)",
        "kind": "agency_guide",
        "quote": "Taxes That Texas Does Not Levy Texas does not collect a state property tax. Property taxes are levied by local governmental entities, school districts and special purpose districts (see p. 24). Texans pay federal income taxes but not state or local income taxes."
      },
      "second_source": {
        "url": "https://gov.texas.gov/business/page/business-climate",
        "doc": "Office of the Texas Governor, Business Climate",
        "kind": "agency_page",
        "quote": "With no corporate or personal income tax, companies doing business in Texas enjoy one of the lowest overall tax burdens in the country.",
        "derived": null
      },
      "single_source": null,
      "verified_at": "2026-09-29"
    }
  ]
}

Record fields

Each topic of a state is a list of records. A verified record has these fields:

FieldMeaning
stateTwo-letter postal code (DC included).
topicRule topic, for example final_pay_fired or minimum_wage.
caseWhich case of the topic the rule covers ("standard" when there is one rule for everyone).
ruleThe rule in plain English, as shown on the Desk pages.
valuesNumbers taken from the quoted text, for example a rate or a number of days (may be empty).
lawThe statute, regulation or agency page the rule comes from.
source_urlOfficial source (government or state legislature website).
source_quoteThe supporting text, word for word, from source_url.
second_source_urlA second official source, or null.
second_source_quoteThe supporting text from the second source, or null.
verified_atDate the rule was last checked against its sources (YYYY-MM-DD).
status"verified" or "no_verified_answer".
messageOnly on "no_verified_answer": says that there is no verified answer.
check_urlOnly on "no_verified_answer": the official page to check instead.

Every file also starts with the same shared fields:

FieldMeaning
attributionName and link to credit.
licenseLicense of the compilation and the status of the quoted government texts.
disclaimerGeneral information, not legal advice.
generated_atWhen the file was built (UTC).
api_versionVersion of the file format.
datasetOn state and topic files: schema.org Dataset metadata for the same data.
Example: the shared fields
{
  "attribution": {
    "name": "InterObservers Employer Desk",
    "url": "https://interobservers.com/desk/"
  },
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "applies_to": "The compilation: selection, structure, summaries and field names, by InterObservers Employer Desk.",
    "official_sources": "Quoted statutes and agency text are reproduced verbatim from official government sources and remain the works of those governments. U.S. federal government works are in the public domain; state and local government material is quoted for reference with a link to the source.",
    "attribution_required": "Credit \"InterObservers Employer Desk\" with a link to https://interobservers.com/desk/."
  },
  "disclaimer": "General information, not legal advice. Laws change; check the official source linked.",
  "generated_at": "2026-10-08T10:51:13Z",
  "api_version": "1.0.0"
}

When there is no verified answer

If we have not verified a rule for a state, the API does not guess. The record has "status": "no_verified_answer", no rule field, and a check_url with the official page to check instead. When a topic has several cases and only some are verified, the unverified case gets its own record with its case field.

Show it to your users the same way the Desk does: "Pending verification. Official source", with the link. Never fill the gap with a rule from another source and present it as ours.

Example: a record with no verified answer (AL, minimum_wage)
{
  "state": "AL",
  "topic": "minimum_wage",
  "status": "no_verified_answer",
  "message": "No verified answer. Check the official source.",
  "check_url": "https://www.dol.gov/agencies/whd/minimum-wage/state"
}

How fresh the data is

  • Each rule carries verified_at, the date it was last checked against its sources.
  • A rule is queued to be checked again 150 days after verified_at.
  • A rule that has not been re-verified within 180 days is removed from the files automatically and becomes no_verified_answer until it passes the checks again.
  • generated_at says when the file was built. The newest verification in the current files is Sep 27, 2026.

How a rule is checked is described in our methodology.

License

The compilation (the selection, the structure, the plain-English summaries and the field names) is published under the Creative Commons Attribution 4.0 license (CC BY 4.0). You can copy, adapt and use it, including commercially, if you give credit.

The quoted statutes and agency texts come from government sources and remain the works of those governments. U.S. federal government works are in the public domain; state and local texts are quoted for reference, with a link to the source.

Attribution

Credit "InterObservers Employer Desk" with a link to https://interobservers.com/desk/ wherever you show the data, for example:

Source: InterObservers Employer Desk (https://interobservers.com/desk/), CC BY 4.0. Rules verified against the official sources cited in each record.

If you show a rule, show its source link and its verification date with it, and keep the "general information, not legal advice" notice.

Rate limits and caching

  • The files are static and served with a cache time of one hour. Fetching the same file more often returns the same data.
  • Cache the files on your side and check generated_at or verified_at to see what changed.
  • No key is needed. Please keep automated traffic reasonable; a daily fetch is enough to stay current.

Changelog

  • 1.0.0 (Sep 25, 2026): first public version. State files, topic files, templates, situations and 2027 changes.

A change that breaks the format will get a new path (/api/v2/); /api/v1/ keeps its fields.

Contact

To report a wrong rule, use the Employer Desk corrections page. For anything else about the API, contact us.

Sources (3)

Checked Sep 27, 2026 · How we verify every rule · Report an error