← Állások

Developer Job Spec — Franklin County Foreclosure Filings Scraper

Költségvetés: $15.0 - $35.0 HOURLY / PART_TIME ⭐ 5.00 (1) USA

data-scraping, data-entry, python, microsoft-excel

I need a scheduled web scraper that pulls new foreclosure case filings from the Franklin County, Ohio Clerk of Courts public case system and writes them to a Google Sheet automatically every day. It must run in the cloud, unattended, on a daily schedule — it cannot depend on my computer being on. This is a tightly scoped job. I have already reverse-engineered how the target site works, so you are building to a known spec, not figuring it out from scratch. The source — The site is the Franklin County Clerk of Courts "Case Information Online" system at https://fcdcfcjs.co.franklin.oh.us/CaseInformationOnline/. It is public record data — no login, no account, no paywall. It is an old, slow government site, so the scraper needs to be patient and reliable rather than fast. How it works — The case lookup is an HTTP POST to https://fcdcfcjs.co.franklin.oh.us/CaseInformationOnline/caseSearch. The key parameters are caseYear (two-digit year, e.g. 26), caseType (CV), and caseSeq (a six-digit sequence number, e.g. 005500), each also mirrored in a hidden field, plus reallySubmit set to true and a few blank fields. Session handling is required — a bare POST returns the wrong page, so you must first GET the home page to establish a session cookie, keep the cookie jar, then POST. Case numbers are sequential (format YY CV NNNNNN) and increment in filing order; the current ceiling is around 26 CV 006503, with roughly 1,000 civil cases filed per month. There is also a "Next Case" button on each case page that walks to the next case and auto-skips sealed or missing numbers — either approach is fine, your call. Identifying foreclosures — Every case-detail page has a "TYPE of CASE" field. Foreclosure cases show the exact value FORECLOSURES, and they are roughly 5 percent of all civil cases. The scraper should walk every CV case in the target range and keep only the foreclosures. Fields to extract — From each foreclosure case-detail page: Case Number, Type of Case, Status, Date Filed, Defendant Name (first name under Defendants), Plaintiff Name (first name under Plaintiffs), and the case link/ID. Important — the property address is NOT on the case-detail page; it lives inside the complaint PDF, and extracting it is OUT OF SCOPE for this job. A human handles the address afterward. Do not build any PDF parsing unless quoted separately. Behavior — On the first run, do a one-time backfill from a starting sequence number I provide (about 30 days back, e.g. 005500) up to the current ceiling. On each scheduled run after that, continue from the last case number processed up to the new ceiling and append only the new foreclosures, tracking the high-water case number so you are not re-scraping the whole range daily. Output goes to a Google Sheet I connect — append, never overwrite — with columns in this order: Case Number, Type of Case, Status, Date Filed, Defendant Name, Plaintiff Name, Case Link. Robustness — The site is flaky, so throttle requests to a polite rate, retry on timeout instead of skipping or crashing, handle sealed or missing case numbers gracefully, and email me an alert if a run returns zero results, since that usually means the scraper broke rather than that no cases were filed. Hosting and scheduling — It must run in the cloud, unattended, on a daily schedule, with my computer off. You choose the stack — Python on a cloud scheduler, serverless, a small VPS, a GitHub Actions cron, whatever is cheapest and most reliable — and you set up the scheduling as part of the deliverable. I should not have to configure servers. Deliverables — A working scraper deployed and running on a daily cloud schedule, writing to my Google Sheet with the correct appended columns, high-water-mark tracking for the daily runs, zero-result alerting, a short written handoff explaining how it works and how to change the starting case number, and a brief walkthrough call or Loom so I can maintain it. Skills needed — Web scraping with session and cookie handling (Python requests/httpx or similar; headless browser only if justified), HTML parsing, Google Sheets API integration, and cloud scheduling and deployment.
Megnyitás Upworkön