Greenhouse & Lever Jobs Scraper: Career Site Jobs | $2/1k avatar

Greenhouse & Lever Jobs Scraper: Career Site Jobs | $2/1k

Pricing

Pay per event

Go to Apify Store
Greenhouse & Lever Jobs Scraper: Career Site Jobs | $2/1k

Greenhouse & Lever Jobs Scraper: Career Site Jobs | $2/1k

Career-site jobs at $0.002 each, with seniority, department and ready-made company presets. Open roles from the public job-board APIs of Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee plus schema.org pages. One clean schema with salary, remote flag, apply URL.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Detroit Web Agent - Open Data

Detroit Web Agent - Open Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

Career Site Jobs API: Greenhouse, Lever, Ashby and 3 more ATS

Greenhouse & Lever Jobs Scraper: features, price and a real output row

Run it free on Apify

Price per 1,000 jobsFree planStarterScaleBusiness
This Actor$2.00$2.00$2.00$2.00

Greenhouse & Lever Jobs Scraper sample output table from a real run

Video walkthrough: [Watch the 1-minute demo on YouTube](https://youtu.be/xrKFGySSP50

Career Site Jobs API output preview: real run results as a table

)

Career Site Jobs API on Apify

Career Site Jobs API sample output table

  • In short: Career Site Jobs API (Apify actor transparent_meteorite/ats-open-roles) returns open jobs straight from company career sites through the public job-board APIs of Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee, plus schema.org JobPosting pages, in one schema.
  • Who it is for: job boards and aggregators, recruiters, sales teams using hiring as a buying signal, labor-market researchers.
  • Input: company names or career-site URLs, keywords, excluded keywords, locations, remote only, posted within days, only-new mode.
  • Output: job title, company, location, remote flag, department, salary when published, posted date, apply URL, ATS name, optional description.
  • Price: $0.002 per job plus $0.00005 per run start. Pay per result, no subscription; Apify's free plan credit covers a first test.
  • Limits: only companies whose career site runs on a supported ATS or publishes schema.org JobPosting; salary only when the employer publishes it.

Key facts

  • Actor name: Career Site Jobs API
  • Actor ID: transparent_meteorite/ats-open-roles
  • Store page: https://apify.com/transparent_meteorite/ats-open-roles
  • Data source: the employers' own public ATS job-board APIs
  • Pricing model: pay per event (apify-actor-start $0.00005, job-extracted $0.002)
  • Output formats: JSON, CSV, Excel, XML, HTML table, RSS (Apify dataset)
  • Access: Apify Console, REST API, JavaScript/Python clients, schedules, webhooks, Apify MCP server
  • Login or third-party API key needed: no, only an Apify account
  • Also known as: Greenhouse jobs API, Lever jobs scraper, Ashby jobs API, ATS jobs API, career site job listing API
  • Maintainer: transparent_meteorite (independent developer)
  • Last updated: 2026-10-07

Give it a list of companies; get every open job from their career sites in one clean table, for $1.20 per 1,000 jobs.

It reads the public job-board APIs of Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, BambooHR, Breezy HR, Pinpoint and Personio (plus the free Arbeitnow aggregate feed via https://www.arbeitnow.com/), plus any career page that publishes schema.org JobPosting data (Teamtailor sites, many custom pages). Paste careers URLs or plain company names; the actor finds the ATS, pulls the open roles and normalizes them into one schema. Salary is included whenever the company publishes it.

Run in 30 seconds

  1. Open the prefilled run (free Apify account; it creates a saved task with a working input).
  2. Press Start. The input is small on purpose, so the first run is quick and costs a few cents at most.
  3. Open the Output tab, switch to Table view, download as CSV, Excel or JSON.

Prefilled input:

{
"companies": [
"airbnb",
"https://jobs.lever.co/spotify",
"https://jobs.ashbyhq.com/ramp"
],
"remoteOnly": false,
"postedWithinDays": 0,
"onlyNewSinceLastRun": false,
"maxJobsPerCompany": 3,
"maxJobsTotal": 3,
"includeDescription": false,
"stateStoreName": "ats-open-roles-seen"
}

Ready-made presets by use case (each opens as a saved task you can edit):

Why choose this over alternatives

  • Six ATS job-board APIs (Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee) plus schema.org JobPosting pages, in one schema.
  • Every job carries a seniority level and a normalized department and employmentType, and you can filter by department and employment type.
  • Ready-made company presets: YC top (25 boards), AI labs (25), fintech (31) and devtools (40).
  • Jobs you already received or filtered out are not charged.
This actorTypical alternatives
Price per job$0.002$0.012 (most-used career-site jobs listing)

Measured 2026-10-09 (source: Apify Store public pricing of the most-used listings in this category).

Sample output

Real rows from a run on Oct 5, 2026 (8 companies, 1,845 open jobs listed, 5 taken per company):

CompanyATSTitleLocationTypePostedSalary
RampashbyDesign Systems LeadNew York, NY (HQ)FULL_TIME2026-09-30280,000-385,000 USD/year
AirbnbgreenhouseSoftware Engineer, Passport & Commerce, AndroidRemote, USA2026-10-01162,000-186,000 USD/year
SpotifyleverLegal Counsel, Litigation and CopyrightNew York, NYFULL_TIME2026-10-01
ServiceNowsmartrecruitersSr Software EngineerSanta Clara, CaliforniaFULL_TIME2026-10-03
bunqrecruiteeiOS DeveloperAmsterdam, NetherlandsFULL_TIME2026-09-29
BluegroundworkableMarketing DesignerAthens, GreeceOTHER2026-09-23
TibberjsonldSenior AI Platform EngineerStockholm, SEFULL_TIME2026-08-27

What you get

One row per open job:

FieldWhat it is
company, companySlugCompany name and its board slug
atsgreenhouse, lever, ashby, workable, smartrecruiters, recruitee or jsonld
jobIdThe ATS's own job id
title, department, locationAs published
remote, workplaceTypetrue/false when the ATS says so, otherwise null (never guessed)
employmentTypeFULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, OTHER or null
postedAt, updatedAtISO 8601 UTC, when the ATS exposes them
salaryMin, salaryMax, salaryCurrency, salaryPeriodOnly when the posting publishes a range
applyUrl, jobUrlDirect links to apply and to the posting
descriptionTextPlain-text description (emails in it are replaced with [email removed])
sourceUrl, scrapedAtWhere and when it was read

New in v0.4 (every row, nothing removed):

Field / inputWhat it is
seniorityHeuristic from the job title only: intern, junior, mid, senior, lead, manager, director, vp or c-level. mid means no seniority word was found. Titles are free text, so treat it as a best guess, not a fact (for example "Staff Engineer" becomes lead, "Product Manager" stays mid).
departmentSame field as before, now whitespace-cleaned; null when the board publishes none.
employmentTypeSame enum as before (FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, OTHER). In our Oct 9 check Ashby, SmartRecruiters and Lever boards published it for 99-100% of jobs and Greenhouse boards for none (0 of 4,364), so a Greenhouse job has null.
input departmentsKeep jobs whose department contains any of these words (substring, not case-sensitive). Jobs without a department are dropped when set.
input employmentTypesfull-time, part-time, contract, intern, temporary. Jobs whose ATS publishes no type are dropped when set, so on Greenhouse boards this filter returns nothing.
input companyPresetyc-top (25 boards), ai-labs (25), fintech (31) or devtools (40); comma-separate to combine. Each board returned live jobs on 2026-10-09 (at least 10 open roles). Lists are curated by us, not an official ranking.

All filters default to off, so existing inputs return exactly what they did before.

New 2026-10-13 (every row; all filters default to off):

Field / inputWhat it is
salaryAnnualMin, salaryAnnualMax, compensationTextPublished pay converted to a yearly figure (hourly x 2080, monthly x 12) and a readable string such as USD 120,000 - 150,000 per year. null when no pay is published.
datePosted, daysSincePostedNormalised posting date (YYYY-MM-DD) and whole days since posting.
skills, benefits, yearsExperienceMinRead from the description text: known tools and languages (whole-word match from a fixed list), benefits such as 401(k), health insurance, equity and unlimited PTO, and years of experience when stated. Empty when the description is off or missing.
input queriesJob title keywords (title only).
input postedAfter, postedBeforePosting date window, YYYY-MM-DD. Undated jobs are dropped when set.
input minSalary, maxSalaryYearly pay window on the published range. Jobs with no published pay are dropped when set.
input workModelsremote, hybrid, on_site.
input skillsInclude, skillsExcludeWhole-word match on title and description; excluded jobs are not charged.
input includeCompanies, excludeCompaniesKeep or skip companies by name or board slug (partial match).

Company size, industry and LinkedIn are not published by the career boards, so they are not returned (nothing is guessed).

Export as CSV, Excel or JSON, or read it from the API.

Quick start

Press Start with the prefilled form: Airbnb, Spotify and Ramp, 10 newest jobs each, about $0.036.

Engineering roles at a list of companies, every open job:

{
"companies": ["stripe", "https://jobs.ashbyhq.com/ramp", "https://jobs.lever.co/spotify", "notion"],
"keywords": ["engineer", "developer"],
"excludeKeywords": ["intern"],
"maxJobsPerCompany": 1000
}

Daily "new jobs only" feed for a watchlist (schedule it once a day):

{
"companies": ["airbnb", "stripe", "https://apply.workable.com/blueground/"],
"onlyNewSinceLastRun": true,
"stateStoreName": "my-watchlist"
}

Remote or local roles posted in the last two weeks (new filters):

{
"companies": ["stripe", "airbnb", "notion"],
"locations": ["United States", "Detroit"],
"remoteOnly": false,
"postedWithinDays": 14
}

locations matches any substring of the job location, remoteOnly keeps jobs flagged remote (or with "remote" in the location), postedWithinDays drops older jobs (jobs with no posted date are kept).

Fast run without descriptions:

{ "companies": ["https://jobs.smartrecruiters.com/ServiceNow"], "includeDescription": false, "maxJobsPerCompany": 500 }

Monitor mode: only new or changed jobs

Set monitorMode to true on a schedule: the first run is a baseline and returns everything; later runs return only new or changed jobs (unchanged jobs are skipped and not charged). State is kept in the key-value store ats-open-roles-monitor under MONITOR_<monitorName> (set monitorName per watch list).

Removed records (reportRemoved, opt-in)

Turn on reportRemoved (together with monitorMode) and a run also emits jobs that were in your saved baseline but are absent now, once each, with changeType: "removed", lastSeenOn and a removedNote. Removed rows are never charged; new and changed rows are priced exactly as before. Nothing changes if you leave it off.

Honesty guards: a job is reported removed only for companies whose full job board was read from the public ATS API this run (not cut by maxJobsPerCompany/maxJobsTotal, no partial page, no early stop). An empty board is never trusted, since it looks the same as an outage; scraped JSON-LD pages are excluded. The row is skipped (and the reason is logged and in OUTPUT.monitor.removedSkipped) when the fetch was incomplete or hit an error, when you changed the filters since the baseline was built, or when the baseline was created before this option existed (run once with it on to build a scope-tagged baseline). A removed row means "not returned any more", which can also mean the source retired or re-filtered the record.

Pricing

$0.0012 per job delivered ($1.20 per 1,000 jobs), plus the platform's $0.00005 start fee per run.

You pullYou pay
30 jobs (the prefilled Start)$0.036
1,000 jobs$1.20
50 companies x 100 jobs$6.00 at most

Jobs removed by your keyword filters and jobs you already received (with onlyNewSinceLastRun) are never charged. A repeat run on the same input with dedupe on charges $0 for jobs. Your run's maximum-charge limit is respected.

Why per company? Broad job feeds charge you for millions of postings across the web. If you already know which companies matter to you (your accounts, competitors, a portfolio, a target list), pulling just their career sites can cost less and stay fresher: the data comes straight from the ATS the company uses.

Apify's free plan includes $5 of monthly platform credit, which covers about 2,000 job listings with this actor (at $0.002 per result, plus small platform usage). Paid Apify plans get the same data with no monthly cap; scheduled daily runs stay cheap because each run only returns new records.

Use with the API, n8n, Make, Zapier, Clay or AI agents

API (returns the rows in one call):

curl -X POST "https://api.apify.com/v2/acts/transparent_meteorite~ats-open-roles/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies":["stripe","ramp"],"keywords":["sales"],"onlyNewSinceLastRun":false}'

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("transparent_meteorite/ats-open-roles").call(run_input={"companies": ["stripe", "ramp"]})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["company"], job["title"], job["location"], job["applyUrl"])
  • n8n, Make, Zapier: use the Apify app's "Run Actor" step with actor transparent_meteorite/ats-open-roles, then send rows to Sheets, Airtable, Slack or your ATS.
  • Clay: add an HTTP API column that calls the run-sync endpoint with the company's careers URL or ATS slug, and count open roles per account.
  • AI agents (MCP): connect https://mcp.apify.com?tools=transparent_meteorite/ats-open-roles to Claude, Cursor or any MCP client, and ask "what is Ramp hiring for?".

Use from AI agents (MCP, ChatGPT, Claude, Perplexity)

Career Site Jobs API works as a tool for AI assistants through the official Apify MCP server. Add this server URL to any MCP client (Claude Desktop, Claude Code, Cursor, ChatGPT connectors, VS Code):

https://mcp.apify.com/?actors=transparent_meteorite/ats-open-roles

Claude Desktop / Cursor config:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?actors=transparent_meteorite/ats-open-roles",
"headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
}
}
}

Then ask in plain language, for example: "How do I scrape Greenhouse or Lever jobs for a list of companies?"

Call it directly over HTTP (runs the actor and returns the dataset items in one request):

curl -X POST "https://api.apify.com/v2/acts/transparent_meteorite~ats-open-roles/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies": ["airbnb", "https://jobs.lever.co/spotify", "https://jobs.ashbyhq.com/ramp"], "maxJobsPerCompany": 5, "onlyNewSinceLastRun": false}'

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("transparent_meteorite/ats-open-roles").call(run_input={"companies": ["airbnb", "https://jobs.lever.co/spotify", "https://jobs.ashbyhq.com/ramp"], "maxJobsPerCompany": 5, "onlyNewSinceLastRun": false})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

The same actor works in n8n, Make, Zapier, LangChain, LlamaIndex and CrewAI through their Apify integrations.

Questions people ask

How do I scrape Greenhouse or Lever jobs for a list of companies? Put the company names or career URLs in companies; the actor detects the ATS and returns every open job in one schema.

Is there a jobs API that covers several ATS platforms? Yes, this one covers Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee. For Workday sites use the Workday Jobs Scraper.

Can I get only newly posted jobs? Yes, set onlyNewSinceLastRun true and schedule it.

Use it from code

Small real input: it returns only a couple of rows, so a test run costs very little (see Pricing). Set the APIFY_TOKEN environment variable to your token from Apify Console > Settings > API & Integrations.

Python (pip install apify-client)

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run_input = {'companies': ['https://jobs.lever.co/spotify'],
'maxJobsPerCompany': 2,
'maxJobsTotal': 2,
'onlyNewSinceLastRun': False}
run = client.actor("transparent_meteorite/ats-open-roles").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js (npm install apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const input = {
"companies": [
"https://jobs.lever.co/spotify"
],
"maxJobsPerCompany": 2,
"maxJobsTotal": 2,
"onlyNewSinceLastRun": false
};
const run = await client.actor('transparent_meteorite/ats-open-roles').call(input);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

curl (runs the actor and returns the dataset items in one call)

curl -X POST "https://api.apify.com/v2/acts/transparent_meteorite~ats-open-roles/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies": ["https://jobs.lever.co/spotify"], "maxJobsPerCompany": 2, "maxJobsTotal": 2, "onlyNewSinceLastRun": false}'

Send results to Google Sheets, Zapier, Make or n8n

  • Google Sheets: every run's dataset has a CSV export link: https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=csv&clean=true (the dataset ID is on the run's Storage tab). In Sheets, =IMPORTDATA("<that link>") loads it. Anyone with the link can read that dataset, so share it carefully. To export to Google Drive automatically, use the Google Drive integration on the actor's Integrations tab.
  • Zapier: in the Apify app, use the trigger Finished Actor run (or Run Actor as an action) with transparent_meteorite/ats-open-roles, then Fetch dataset items and pass the rows to Google Sheets, a CRM or Slack.
  • Make: the Apify app has Watch Actor Runs, Run an Actor and Get Dataset Items modules; connect them to any Make app.
  • n8n: install the Apify node (@apify/n8n-nodes-apify) and use Run an Actor and get dataset, or the On new Apify event trigger.
  • Schedule and webhooks: create a Task with your input, add a Schedule in Apify Console, and add a webhook if you want a call when a run finishes.

See the Apify integrations docs for setup steps.

Use cases

  • Job boards and aggregators: one schema for jobs from Greenhouse, Lever, Ashby and the other supported ATS.
  • Sales teams: use new openings as a buying signal (for example a company hiring its first data engineer).
  • Recruiters: watch target companies and get only newly posted roles each day.
  • Labor-market research: track openings by keyword, location or remote status across a company list.
  • Internal tools: feed a Slack channel or sheet with new roles at the companies you follow.

New to Apify? Create a free account and run this Actor in under a minute. Some links are affiliate links.

More tools from the same publisher that fit this workflow:

Use from AI agents: every actor here is callable through the Apify MCP server (mcp.apify.com) and our open-data-actors MCP endpoint.

FAQ

How do I scrape jobs from Greenhouse?

Add the board URL (https://boards.greenhouse.io/stripe) or just the slug (stripe) to companies. The actor uses Greenhouse's public job-board API, so you get every open role with no login and no browser.

How do I get all jobs from a Lever or Ashby career page?

Same thing: paste https://jobs.lever.co/<company> or https://jobs.ashbyhq.com/<company>, and raise maxJobsPerCompany to cover the board.

How do I find which ATS a company uses?

Enter the company name (for example airbnb). The actor checks all ten ATS APIs and uses the board with the most jobs; the ats column tells you which one it found.

Can I get salary ranges from job postings?

Yes, when the company publishes them: Greenhouse pay transparency, Lever salary range, Ashby compensation, Recruitee, and JSON-LD baseSalary. Otherwise the salary fields are null. In our Oct 5 sample, Airbnb and Ramp rows carried ranges.

How do I get only new job postings each day?

Turn on onlyNewSinceLastRun and schedule the actor daily. It remembers which jobs you received (per company, in a named store) and returns only new ones. Already-seen jobs are not charged.

How is seniority worked out, and how reliable is it?

From the job title only, with fixed keyword rules (no AI). Management words win over level words, so "Senior Engineering Manager" is manager, while "Senior Product Manager" is senior. It is a heuristic: unusual titles fall back to mid, and companies use levels differently.

How do I fetch jobs from a ready-made list of companies?

Set companyPreset to yc-top, ai-labs, fintech or devtools. If you leave companies at its default, only the preset is fetched; companies you type yourself are added on top. Combine with departments, employmentTypes, keywords or remoteOnly to narrow it down.

Does it support Workday, iCIMS or Taleo?

No. Those career sites are not supported today. See Limitations.

This actor only reads the public job-board endpoints that ATS vendors publish so companies can display openings, plus public schema.org markup, and it checks robots.txt for HTML pages. No login, no personal data. You are responsible for how you reuse the listings.

More questions

How do I get all jobs from a Greenhouse, Lever or Ashby careers page? Put the company name or its board URL in companies. The actor reads that board's public job API and returns one row per job.

Do I need to know which ATS a company uses? No. A bare company name is probed against the supported ATS; a full board URL also works.

Can I get only new postings each day? Yes. onlyNewSinceLastRun (on by default) returns only jobs not seen in earlier runs.

Does it include salary? Only when the employer publishes it on the posting.

Does it cover Workday? No. Use the Workday Jobs Scraper for myworkdayjobs.com sites.

How this compares

Each ATS has a public job-board API, so you could call them yourself; the work is in handling several formats, guessing which ATS a company uses, and tracking what is new. This actor does that in one schema. Large job-data vendors may cover more ATS or keep job history; this actor reads live boards only, for the companies you list.

Limitations

  • Six ATS vendors plus JSON-LD. Workday, iCIMS, Taleo, BambooHR, Personio and JavaScript-only career sites are not supported. A career page with no supported ATS and no JSON-LD returns 0 rows with a note in the run's OUTPUT record, and costs nothing.
  • A company name can match the wrong board when two companies share a slug. A careers URL is always precise.
  • Fields depend on the ATS. For example Lever has no updatedAt, Greenhouse has no remote flag (we mark remote: true only when the location says "remote"), and most boards publish no salary.
  • The JSON-LD fallback reads only the page you give it and the job links on it (up to 200); it does not paginate or read sitemaps.
  • maxJobsPerCompany takes the newest N matching jobs before dedupe, so an older job outside the newest N is not delivered until it moves into them.
  • No recruiter names, emails or other personal data are collected.

Missing an ATS or a field? Open an issue on the Issues tab and we reply quickly.

Reliability

Last 30 days, measured from Apify run records (all runs, including our own daily health checks): 51 of 51 finished runs succeeded (100.0%), median run time 4.0 s (90th percentile 18.4 s). Aborted runs (0) are not counted.

Updated 2026-10-11 automatically every week from the run history. Report any failure on the Issues tab with the run URL.

More resources

Changelog

  • 2026-10-05: Listing rewrite; added BambooHR, Breezy HR, Pinpoint and Personio boards plus the Arbeitnow feed.
  • 2026-10-06: Added Remotive and Remote OK feeds.
  • 2026-10-09: Output tab table view; video walkthrough.
  • 2026-10-09: Input sections, status messages, examples.
  • 2026-10-09: Branding: maintained by Detroit Web Agent - Open Data.
  • 2026-10-13: Added a Run in 30 seconds section with a one-click prefilled run link, saved use-case presets, cross-links to pairing actors and Store title and search description reworded around how buyers search.
  • 2026-10-13: New inputs: queries, postedAfter/postedBefore, minSalary/maxSalary, workModels, skillsInclude/skillsExclude, includeCompanies/excludeCompanies. New fields: salaryAnnualMin/Max, compensationText, datePosted, daysSincePosted, skills, benefits, yearsExperienceMin. Prices unchanged.

What the free plan gets you

Free plan: about 2,500 job listings from your $5 monthly Apify credit (at $0.002 each, today's price); default settings return about 5 rows. Need more? Upgrade your Apify plan or set a higher result limit in the input.

Need more than the data?

This actor is built by Detroit Web Agent, a small Detroit studio that builds websites, lead pages and simple data tools for small businesses. If you want these results turned into a working website, a landing page or a CRM import, or you need a field this actor does not cover yet, open an issue on the Issues tab or visit detroitwebagent.com.

Works well with

Other actors from Detroit Web Agent - Open Data that pair with this one:


Built and maintained by Detroit Web Agent - Open Data (Detroit, Michigan). Questions, bugs or a field you need: open an issue on this Actor's Issues tab and we will reply there.