{"id":34766845,"url":"https://github.com/jzebedee/uscis","last_synced_at":"2026-05-31T10:00:42.278Z","repository":{"id":40472846,"uuid":"472010714","full_name":"jzebedee/uscis","owner":"jzebedee","description":"Daily datasets of USCIS form processing times","archived":false,"fork":false,"pushed_at":"2026-04-18T06:11:15.000Z","size":74,"stargazers_count":7,"open_issues_count":0,"forks_count":4,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-18T08:37:38.082Z","etag":null,"topics":["citizenship","foia","immigration","sqlite","uscis"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jzebedee.png","metadata":{"files":{"readme":"README.md","changelog":"changelog-template.txt","contributing":null,"funding":".github/FUNDING.yml","license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":"jzebedee","patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":null,"thanks_dev":null,"custom":null}},"created_at":"2022-03-20T14:51:11.000Z","updated_at":"2025-11-17T20:41:09.000Z","dependencies_parsed_at":"2026-04-01T23:06:20.597Z","dependency_job_id":null,"html_url":"https://github.com/jzebedee/uscis","commit_stats":null,"previous_names":[],"tags_count":1456,"template":false,"template_full_name":null,"purl":"pkg:github/jzebedee/uscis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jzebedee%2Fuscis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jzebedee%2Fuscis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jzebedee%2Fuscis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jzebedee%2Fuscis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jzebedee","download_url":"https://codeload.github.com/jzebedee/uscis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jzebedee%2Fuscis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33726719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-05-31T02:00:06.040Z","response_time":95,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["citizenship","foia","immigration","sqlite","uscis"],"created_at":"2025-12-25T07:38:55.615Z","updated_at":"2026-05-31T10:00:42.273Z","avatar_url":"https://github.com/jzebedee.png","language":"Shell","funding_links":["https://github.com/sponsors/jzebedee"],"categories":[],"sub_categories":[],"readme":"# USCIS Dataset [![GitHub Sponsors](https://img.shields.io/github/sponsors/jzebedee)](https://github.com/sponsors/jzebedee)\n\n[![Build USCIS DB](https://github.com/jzebedee/uscis/actions/workflows/build_db.yml/badge.svg)](https://github.com/jzebedee/uscis/actions/workflows/build_db.yml)\n\nDaily datasets of USCIS form processing times\n\n## About\n\nThe U.S. Citizenship and Immigration Services (USCIS) provides estimated [case processing times](https://egov.uscis.gov/processing-times/more-info) and [information request processing times](https://first.uscis.gov/#/check-status) that vary by form and service center. These estimates include both an estimate of the case adjudication time as well as the _case inquiry date_, which determines when an applicant may contact USCIS regarding a case that is outside of normal processing times.\n\nUnfortunately, these estimates are updated silently without any notification or record, sometimes multiple times per day. This project is an attempt to provide transparency for applicants who may be surprised to find that their case inquiry date was changed without their knowledge.\n\n## How it works\n\nThe dataset releases are produced on a daily cron schedule that scrapes the USCIS case processing time site and compiles the results into a SQLite database.\n\nThe raw JSON results are also collected into a [SQLite archive](https://www.sqlite.org/sqlar.html) and published as an artifact, in the case of debugging or if there's additional information to extract. These artifacts are _not_ a permanent collection and will be removed eventually based on the [artifact retention period](https://docs.github.com/en/organizations/managing-organization-settings/configuring-the-retention-period-for-github-actions-artifacts-and-logs-in-your-organization).\n\n## Changelog\n\n### v0.5 - 2025-02-23\n\n* We now collect FOIA processing times.\n\n#### Schema\n\n##### `forms` table\n```sql\nCREATE TABLE forms(\n    name TEXT PRIMARY KEY,\n    description_en TEXT,\n    description_es TEXT\n) WITHOUT ROWID\n```\n\n##### `offices` table\n```sql\nCREATE TABLE offices(\n  \"code\" TEXT PRIMARY KEY,\n  \"description\" TEXT\n) WITHOUT ROWID\n```\n\n##### `foia_processing_time` table\n```sql\nCREATE TABLE \"foia_processing_time\" (\n  \"id\"\tINTEGER,\n  \"metricTimestamp\"\tTEXT,\n  \"metricName\"\tTEXT,\n  \"metricValue\"\tINTEGER,\n  \"trackId\"\tINTEGER,\n  \"officeId\"\tINTEGER,\n  \"officeCode\"\tTEXT,\n  PRIMARY KEY(\"id\")\n) WITHOUT ROWID\n```\n\n##### `processing_time` table\n```sql\nCREATE TABLE processing_time(\n  \"form_name\" TEXT,\n  \"office_code\" TEXT,\n  \"form_note_en\" TEXT,\n  \"form_note_es\" TEXT,\n  \"form_subtype\" TEXT,\n  \"publication_date\" TEXT,\n  \"range_upper\" REAL,\n  \"range_upper_unit\" TEXT,\n  \"range_lower\" REAL,\n  \"range_lower_unit\" TEXT,\n  \"service_request_date\" TEXT,\n  \"subtype_info_en\" TEXT,\n  \"subtype_info_es\" TEXT,\n  \"subtype_note_en\" TEXT,\n  \"subtype_note_es\" TEXT,\n  PRIMARY KEY(\"form_name\",\"office_code\",\"form_subtype\")\n) WITHOUT ROWID\n```\n\n##### `form_types` table\n```sql\nCREATE TABLE form_types(\n    form_name TEXT,\n    form_key TEXT,\n    form_type TEXT,\n    description_en TEXT,\n    description_es TEXT,\n    offices JSON,\n    PRIMARY KEY(\"form_name\",\"form_key\")\n) WITHOUT ROWID\n```\n\n##### `selftest` table\nUsed for [SQLite database integrity self-tests](https://www.sqlite.org/cli.html#database_content_self_tests)\n\n### v0.4 - 2025-02-03\n\n* USCIS has begun aggressively blocking scraping requests and significantly limited who can reach their website. Collecting form processing times now requires us to go through a much more time and resource intensive process using residential proxy servers. I've added a link to my [funding page](https://github.com/sponsors/jzebedee) if you'd like to support the project.\n\n### v0.3 - 2023-07-29\n\n* Release notes are now generated with `sqldiff` output to compare daily changes\n\n### v0.2 - 2022-05-05\n\n* Office data is now grouped by form subtype in the `form_types` table\n* JSON result artifacts are now published in each action run\n\n#### Schema\n\n##### `forms` table\n```sql\nCREATE TABLE forms(\n    name TEXT PRIMARY KEY,\n    description_en TEXT,\n    description_es TEXT\n) WITHOUT ROWID\n```\n\n##### `offices` table\n```sql\nCREATE TABLE offices(\n    code TEXT PRIMARY KEY,\n    description TEXT\n) WITHOUT ROWID\n```\n\n##### `processing_time` table\n```sql\nCREATE TABLE processing_time(\n  \"form_name\" TEXT,\n  \"office_code\" TEXT,\n  \"form_note_en\" TEXT,\n  \"form_note_es\" TEXT,\n  \"form_subtype\" TEXT,\n  \"publication_date\" TEXT,\n  \"range_upper\" REAL,\n  \"range_upper_unit\" TEXT,\n  \"range_lower\" REAL,\n  \"range_lower_unit\" TEXT,\n  \"service_request_date\" TEXT,\n  \"subtype_info_en\" TEXT,\n  \"subtype_info_es\" TEXT,\n  \"subtype_note_en\" TEXT,\n  \"subtype_note_es\" TEXT,\n  PRIMARY KEY(\"form_name\",\"office_code\",\"form_subtype\")\n) WITHOUT ROWID\n```\n\n##### `form_types` table\n```sql\nCREATE TABLE form_types(\n    form_name TEXT,\n    form_key TEXT,\n    form_type TEXT,\n    description_en TEXT,\n    description_es TEXT,\n    offices JSON,\n    PRIMARY KEY(\"form_name\",\"form_key\")\n) WITHOUT ROWID\n```\n\n##### `selftest` table\nUsed for [SQLite database integrity self-tests](https://www.sqlite.org/cli.html#database_content_self_tests)\n\n### v0.1 - 2022-03-21\n\n* Initial release\n\n#### Schema\n\n##### `forms` table\n```sql\nCREATE TABLE forms(\n    name TEXT PRIMARY KEY,\n    description_en TEXT,\n    description_es TEXT,\n    offices JSON\n) WITHOUT ROWID\n```\n\n##### `offices` table\n```sql\nCREATE TABLE offices(\n    code TEXT PRIMARY KEY,\n    description TEXT\n) WITHOUT ROWID\n```\n\n##### `processing_time` table\n```sql\nCREATE TABLE processing_time(\n  \"form_name\" TEXT,\n  \"office_code\" TEXT,\n  \"form_note_en\" TEXT,\n  \"form_note_es\" TEXT,\n  \"form_subtype\" TEXT,\n  \"publication_date\" TEXT,\n  \"range_upper\" REAL,\n  \"range_upper_unit\" TEXT,\n  \"range_lower\" REAL,\n  \"range_lower_unit\" TEXT,\n  \"service_request_date\" TEXT,\n  \"subtype_info_en\" TEXT,\n  \"subtype_info_es\" TEXT,\n  \"subtype_note_en\" TEXT,\n  \"subtype_note_es\" TEXT,\n  PRIMARY KEY(\"form_name\",\"office_code\",\"form_subtype\")\n) WITHOUT ROWID\n```\n\n##### `selftest` table\nUsed for [SQLite database integrity self-tests](https://www.sqlite.org/cli.html#database_content_self_tests)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjzebedee%2Fuscis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjzebedee%2Fuscis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjzebedee%2Fuscis/lists"}