Developer API
Programmatic access to docket search, retrieval, documents, and AI-powered analysis.
Introduction
The Docket Alarm API gives you one REST API to hundreds of US courts, including PACER. Use it to search for cases, retrieve docket metadata, and download the PDF court filings behind each docket. Every court returns the same response schema, so your application can work with data from hundreds of courts through a single integration.
What the API does
The API supports legal automation, research, and alerting workflows. It covers over a billion tagged court dockets and OCRed PDF documents, and the text inside those documents is searchable, including with boolean (terms and connectors) queries.
Motion analysis (motion type, outcome, and importance) is also available through the analyze field on Get Docket. Contact questions@docketalarm.com about adding it or other value-added metadata to your license.
Docket Alarm also connects to the USPTO (PTAB/TTAB, TSDR, PAIR), so you can automate IP portfolio analysis and other prosecution and litigation workflows. See the full list of available jurisdictions.
In the API, each docket entry is one item in the docket_report list returned by Get Docket: the date is date, the filing number is number, the summary is contents, and the PDF is link, which you download with Get Document. The summary can contain HTML formatting.
Questions about the API, or need a feature that isn't documented here? Email support@docketalarm.com.
Authentication
Docket Alarm uses token-based authentication. First call the login/ endpoint with your account username and password to obtain a login token. The token is valid for 90 minutes. Send it on every other request in the Authorization HTTP header, as Authorization: Bearer <login_token>. Reuse a single token across many calls rather than logging in for each one.
You need a Docket Alarm account to use the API, and API access is an add-on to your subscription. To add it, contact our sales team and tell us what you're building.
Authorization header. A login_token sent as a request parameter is refused. By then it has already been sent, and URLs end up in server and proxy logs, browser history, and referer headers, so never put the token in a URL; if you have, treat that token as exposed until it expires. Using v1? See Migrating from v1.
Parameters
| Parameter | Type | Description |
|---|---|---|
| usernamerequired | string | Your Docket Alarm account username (usually your email address). |
| passwordrequired | string | Your Docket Alarm account password. |
Example Request
Example Response
Using the token
login/ every time, and request a fresh one once it expires. Never embed your password in client-side code.
Quickstart
This complete Python 3 example logs in, runs a search, and reads the stored copy of the first matching docket. It uses only the requests library (pip install requests). It reads the docket with cached=true, so there are no court fees.
The same calls with curl
Testing
The test parameter needs no value: ?test on its own is enough. It changes what only some endpoints do:
searchpacer/returns sample results instead of searching PACER, so there are no PACER fees.track/sends a test push notification with fake data and does not create or change a tracker (see Push Notifications).search/runs a real search with a fixed sample query and ignoresq.- Every other endpoint, including
getdocket/, works and is billed as usual.
To keep costs down while you build, read dockets with cached=true, which returns Docket Alarm's stored copy instead of pulling from the court.
API access has to be enabled on your account, and your email address confirmed, before login/ returns a token. To get access, contact our sales team.
Rate Limits and Retries
The API enforces rate limits to keep the service fast and reliable for everyone. As a best practice, keep your request rate within the per-minute limits below. If you go over, requests may be throttled, so slow down and retry.
| Endpoint | Best-practice limit | Window |
|---|---|---|
| Search | 60 requests | per minute |
| Get Docket | 200 requests | per minute |
| Get Document | 300 requests | per minute |
Retrying failed requests
Some calls make Docket Alarm contact the court for fresh information, and those connections can fail because of court maintenance, heavy load on the court's servers, or a CAPTCHA. Build in retries with exponential backoff (wait a little longer after each failed attempt) and keep your request rate to these endpoints modest. The calls that contact the court are:
searchpacer/getdocket/withcached=false(or withcachedleft out)- Document downloads that are not already in Docket Alarm
Requests that read Docket Alarm's own copy, such as search/ and getdocket/ with cached=true, do not contact the court.
What Counts as a Call
A call is a single request to one of the API endpoints. Your usage is measured in calls, so it helps to know what counts as one.
| Endpoint | What counts as one call |
|---|---|
| search/ | One call per request against Docket Alarm's own database. |
| getdocket/ | One call per docket you retrieve. |
| searchpacer/ | One call per direct-to-court search. PACER fees are $0.10 for each page of results. |
| getdocument/ | One call per PDF you pull. Each document opened from a docket entry's link is its own call, and for federal cases it may carry PACER fees depending on the document. |
| track/ | One call per request. The alerts and push notifications that follow are not calls. |
| login/ | Authentication only. Not a call. |
Paging: each page is its own call
Each page of results counts as its own API call. search/ returns at most 50 results per request, so each time you advance the offset to fetch the next batch, that is a separate call: ten pages of results is ten calls, not one. The same applies to searchpacer/, which returns 50 results per page and advances with the page parameter (each page may carry its own PACER fee).
offset/limit to page through your results -- set offset to the number of results you've already seen and limit to how many you want next.
Example workflow
A typical sequence to find cases where Uber was a defendant, then pull dockets and filings:
-
1
Not a call
login/once to get alogin_token(good for 90 minutes), then send it asAuthorization: Bearer <login_token>on every call below. -
2
Call #1
search/withq=party:(name:uber type:defendant) is:docket,offset=0,limit=50-- returns the first 50 results plus a total count. -
3
Call #2
search/again withoffset=50for results 51 to 100, a separate call purely because it is the next page. Repeat for each page. -
4
Call #3
getdocket/for a case from your results, passing itscourtanddocket.cached=truereturns Docket Alarm's stored copy;cached=false(or omitting it) pulls a fresh copy from the court and may trigger PACER fees. The response lists docket entries, each with a link to its PDF. -
5
Call #4
getdocument/to download a PDF using the link from a docket entry. -
6
Optional
track/to start tracking the case, so Docket Alarm checks it on a schedule and tells you when something new is filed. Eachtrack/request counts as a call. The alerts Docket Alarm sends you afterward do not. -
7
Not a call
Receive a push notification at your server whenever a tracked case gets a new entry, instead of polling
getdocket/.
Already know the court and want PACER's live results instead of Docket Alarm's index? Use searchpacer/ in place of step 2. See Search PACER.
Changelog
Changes to the Docket Alarm API, newest first.
-
October 2026
1,000-alert limit. Each user can have up to 1,000 enabled alerts in total, including alerts created on the website. Past that,
track/will not enable new alerts. See Track a Case. -
July 2026
Login token moves to the
Authorizationheader. In v1.1, sendAuthorization: Bearer <login_token>on every call. Alogin_tokensent as a request parameter is refused. Every other parameter is unchanged. -
July 2026
RSS feed per docket entry.
getdocket/acceptsformat=rss_entries, an RSS 2.0 feed with one item per docket entry. Use it withcachedso polling the feed does not contact the court. -
June 2026
AI keys move to headers. For Ask a Docket, send your key in
X-OpenAI-KeyorX-Anthropic-Key. Keys sent as URL parameters are rejected in v1.1. If you have ever sent a key in a URL, rotate it. -
February 1, 2027
v1 stops working. Requests to
/api/v1/will return HTTP410 Gonewith an error pointing to v1.1 and these docs.
Moving from v1 to v1.1
v1 is deprecated. It still works today, with no change in results, call counts, or billing, but it will stop working on February 1, 2027. If any of your requests go to /api/v1/, or put login_token in a URL, you need to move to v1.1. v1.1 has the same endpoints, parameters, and responses. Only two things change: the version in the URL, and where you send your credentials.
- June 2026: v1.1 AI endpoints released. AI keys move to headers.
- July 2026: v1.1 released. The login token moves to the
Authorizationheader. - February 1, 2027: v1 deprecation date. v1 requests stop working and return an error.
What changes
| What | v1 (deprecated) | v1.1 (current) |
|---|---|---|
| Base URL | /api/v1/ |
/api/v1.1/ |
| Login token | login_token query parameter or form field |
Authorization: Bearer <login_token> header. A login_token request parameter is refused. |
| AI keys (Ask a Docket and the other AI endpoints) | openai_key / anthropic_key query parameters |
X-OpenAI-Key / X-Anthropic-Key headers. Keys in the URL are rejected. |
| Everything else | Unchanged: parameters, responses, rate limits, what counts as a call, and PACER fees. | |
After February 1, 2027
Requests to v1 will fail with HTTP 410 Gone and a JSON body like:
Need help moving, or more time? Email support@docketalarm.com.
Search
v1.1Full-text search across Docket Alarm's database of dockets and documents from federal courts, state courts, the PTAB, the USPTO, and other jurisdictions. The query syntax supports field filters (e.g. is:docket, court:("N.D. Cal.")) and boolean operators. Each result is either a docket or a document, indicated by result_type.
This is the recommended way to find cases. It only finds cases Docket Alarm has already collected; to search PACER live, use Search PACER.
Headers
| Header | Type | Description |
|---|---|---|
| Authorizationrequired | string | Bearer <login_token>, using the token from login/. In v1.1 a login_token sent as a request parameter is refused. |
Parameters
| Parameter | Type | Description |
|---|---|---|
| qrequired | string | URL-encoded search query. Supports full-text terms, party names, case numbers, field filters, and boolean operators. See the query syntax guide. |
| ooptional | string | Sort order:
|
| limitoptional | integer | Results per page. Default: 8. Max: 50. |
| offsetoptional | integer | Result offset for paging. offset + limit can be at most 5000; to go further, see Paging below. |
| client_matteroptional | string | Your own client/matter code for billing and tracking. |
Example Request
Example Response
Return Values
A successful response contains the following top-level fields.
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded. On failure it is false and an error field describes the problem. |
| count | integer | Total number of results that match the query, not just those returned on this page. |
| search_results | array | The matching results for this page. See search_results item below. |
search_results item
| Field | Type | Description |
|---|---|---|
| result_type | string | Whether this result is a docket or a document. Other result types (for example statutes, people, or companies) may be added in future, so handle unknown values gracefully. |
| court | string | The court the result belongs to. |
| docket | string | Docket number / case identifier. |
| title | string | Case caption (for dockets) or document title (for documents). |
| date_filed | string | Filing date of the case or document. |
| link | string | URL to the full record on Docket Alarm. |
| link_viewer / filename | string | Document viewer URL and filename. Present on document results only. |
| date_cached / datetime_cached | string | When Docket Alarm last pulled the docket from the court: date_cached is the date, datetime_cached the full timestamp in ISO 8601 format, in UTC. Present on docket results only. |
| cache_unofficial | boolean | true if the docket came from an unofficial source, such as GPO or a PACER RSS feed, rather than the court's own docket. Present on docket results only. |
Paging
Use offset/limit to page through your results -- set offset to the number of results you've already seen and limit to how many you want next.
Beyond 5,000 results, use date bucketing. offset + limit can be at most 5,000, so a query with more matches than the cap cannot be paged to the end with offset alone. Instead, split the query into date ranges (each under the cap) with the from:/to: filters and page through each range. to: is exclusive (< the date) while from: is inclusive (≥), so make the ranges contiguous by reusing the boundary date -- the next range's from: equals the previous range's to: (do not add a day, or you drop it):
Search PACER
v1.1Run a live search directly against PACER (federal courts) using PACER's own party and case-locator fields. This searches PACER in real time rather than the Docket Alarm index. A request that sends only client_matter (with your token in the Authorization header) returns the list of available parameter options. Results are paginated with page (see page_max in the response).
Reach for Search PACER when you need brand-new federal filings sooner than they reach Docket Alarm, which indexes newly filed federal cases within 24 hours of filing at most.
Headers
| Header | Type | Description |
|---|---|---|
| Authorizationrequired | string | Bearer <login_token>, using the token from login/. In v1.1 a login_token sent as a request parameter is refused. |
Parameters
| Parameter | Type | Description |
|---|---|---|
| client_matterrequired | string | Your client/matter code for billing and tracking (may be blank). |
| party_nameoptional | string | A company name, or an individual's last name. |
| first_name / last_nameoptional | string | First and last name when searching for an individual. Cannot be combined with party_name. |
| middle_nameoptional | string | Middle name when searching for an individual. Cannot be combined with party_name. |
| nature_of_suitoptional | string[] | One or more Nature of Suit (NOS) codes to filter by, such as 830 (the code alone, not 830 Patent). Get the valid codes, the keys of nature_of_suits, from Discovering valid options below. |
| case_typeoptional | string | Restrict to a case type: Appellate, Bankruptcy, Civil, Criminal, or Multi-District Litigation. Leave blank to search all case types. |
| date_filed_start / date_filed_endoptional | date | Filter to cases filed on or after the start date and on or before the end date (YYYY-MM-DD). |
| date_terminated_start / date_terminated_endoptional | date | Filter to cases terminated on or after the start date and on or before the end date. |
| court_regionoptional | string | Limit to cases filed in one region. Get the valid values from court_regions in Discovering valid options below. |
| docket_numoptional | string | Limit to cases with this docket number. Use it when you know the docket number but not the court. |
| mdl_idoptional | string | Find a Multi-District Litigation by its MDL ID number. Requires case_type set to Multi-District Litigation. |
| pageoptional | integer | Page number (1-based) for paginating results. Run the search once (page 1) before requesting a later page. |
| ssn_tidoptional | string | The nine-digit Social Security number or federal tax ID of a party to the case. case_type must be Bankruptcy. |
| ssn4optional | string | The last four digits of a party's Social Security number. case_type must be Bankruptcy, and party_name must also be set. |
Example Request
Example Response
Return Values
A successful response contains the following top-level fields.
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded. On failure it is false and an error field describes the problem. |
| page_max | integer | Up to 50 results are returned per search. When more than 50 cases match, this is the number of pages of data available; retrieve the rest with the page parameter.Known issue: when there are thousands of results, page_max may be under-reported on page 1. Rely on it from page 2 onward. |
| search_results | array | The matching federal cases for this page. See search_results item below. |
search_results item
| Field | Type | Description |
|---|---|---|
| title | string | Case title. |
| court | string | PACER court the case is in. |
| docket | string | Docket number / case identifier. |
| date_filed | string | Date the case was filed. |
| link | string | URL to the docket on Docket Alarm. |
| nature_of_suitoptional | string | Nature of Suit (NOS) code. Bankruptcy cases do not have one. |
| date_terminatedoptional | string | Date the case was terminated, if it has closed. |
| party_nameoptional | string | Full party name. Returned when you searched by party_name. |
| party_roleoptional | string | The party's role in the case, for example Plaintiff or Defendant. |
Discovering valid options
Send a request with only the Authorization header and client_matter (no search fields) to retrieve the values this endpoint accepts. The response is a set of reference lists you can use to build a valid search.
Example Request
Example Response
| Field | Description |
|---|---|
| courts | The PACER courts this endpoint can search. |
| court_regions | Valid values for the court_region parameter. |
| nature_of_suits | Valid Nature of Suit (NOS) codes for the nature_of_suit parameter. |
| case_types | Valid values for the case_type parameter. |
Get Docket
v1.1Retrieve a full case: normalized case info, the complete docket_report (every entry, with links to any documents), and the parties and their counsel. Results are normalized across all supported jurisdictions.
cached parameter and costs: By default Docket Alarm pulls the docket live from the court, which can incur PACER and per-page charges. Set cached=true to return Docket Alarm's already-stored copy and avoid those charges. We recommend always setting cached=true unless you specifically need the very latest filings, since leaving it false triggers a live pull and can cost money on every call.
Headers
| Header | Type | Description |
|---|---|---|
| Authorizationrequired | string | Bearer <login_token>, using the token from login/. In v1.1 a login_token sent as a request parameter is refused. |
Parameters
| Parameter | Type | Description |
|---|---|---|
| client_matterrequired | string | Your client/matter code for billing and tracking (may be blank). |
| courtrequired | string | Court name, exactly as Docket Alarm names it, e.g. California Northern District Court. Use the court value from a search result or push notification. |
| docketrequired | string | Docket number / case identifier, e.g. 5:11-cv-01846. Use the docket value from a search result or push notification. |
| cachedoptional | boolean | If true, return the cached docket instead of pulling live from the court. Recommended. Default behavior pulls live and may incur costs. Check info.datetime_cached in the response to see how fresh the copy is. |
| formatoptional | string | Response format:
|
| normalizeoptional | boolean | If true, include normalized party, attorney, firm, and judge names (the *_normalized fields below). Default: false, which may change in future. Normalization is well tested but not perfect. |
| use_last_filing_dateoptional | boolean | PACER dockets only. Only with cached off: sending this option together with cached=true, even as false, fails with "Cannot set downloader options for cached dockets." Skip the live pull if there has been no new activity since the last filing date, reducing PACER fees. Docket Alarm can check the latest filing date for free, so a docket with no new filings costs nothing to check. Two trade-offs: if an existing entry is changed (rather than a new one added), the update is missed; and if there are new filings, the docket is pulled normally and PACER fees apply. Useful when you only care about new filings. |
| pacer_summary_pageoptional | boolean | Only with cached off, like use_last_filing_date. PACER dockets only. Also pull the PACER Summary page, which adds disposition to info. Costs an extra $0.10, and up to $3.00 if the summary is very large. |
Example Request
Example Response
Return Values
A successful response contains the following top-level fields.
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded. On failure it is false and an error field describes the problem. |
| info | object | Normalized case information (title, judges, dates, and more). See info object below. |
| docket_report | array | Every docket entry for the case, in order. See docket_report entry below. |
| parties | array | The parties to the case and their counsel. See parties entry below. |
| related | array | Related cases, when available. See related entry below. |
| claims | array | Claims or charges, when available. Most courts do not provide them. See claims entry below. |
info object
| Field | Type | Description |
|---|---|---|
| title | string | Case caption / title. |
| date_filed | string | Date the case was filed. |
| link | string | URL of the page on Docket Alarm that shows the full docket. |
| judges | string[] | Presiding judge(s). judges_normalized holds normalized names when normalize is requested. |
| judgeDeprecated | string | A single presiding judge. Kept for backwards compatibility; use judges instead. |
| magistrate | string | The magistrate judge on the case. Federal cases only. |
| nature_of_suit | string | Nature of Suit (NOS) code. See nature_of_suits in Search PACER for the list. |
| type / status / cause | string | Case type, current status, and the cause of action. type and status are not available for federal cases, vary from court to court, and are not normalized. cause is available for federal cases only. |
| division | string | The sub-court or division, in courts that have one. |
| date_terminated | string | Date the case was terminated, if closed. |
| demand | string | The type of demand made by the plaintiff. Federal cases only. |
| flags | string[] | Case flags, usually in capitals (for example JURY). Federal cases only. |
| disposition | string | How the case was resolved. Available in a number of state courts, and for federal district courts with pacer_summary_page (extra PACER fee). |
| patents | string[] | Patent numbers at issue. Available for PTAB cases, and for federal court cases where Docket Alarm has already pulled the complaint (which usually lists every patent in suit). |
| date_cached / datetime_cached | string | When Docket Alarm last pulled this docket from the court: date_cached is the date, datetime_cached the full timestamp in ISO 8601 format, in UTC. |
| cache_unofficial | boolean | true if Docket Alarm did not get this docket from an official court source. |
Bankruptcy fields in info
Bankruptcy cases can include these dates, deadlines, and dispositions. Some, none, or all may be present depending on the stage of the bankruptcy. All are strings except is_asset and is_voluntary, which are booleans.
- Dates:
date_debtor_discharged,date_joint_debtor_discharged,date_341_meeting,date_plan_confirmed,date_discharged,date_converted - Deadlines:
date_deadline_object_discharge,date_deadline_financial_mgmt_course,date_deadline_filing_claims - Dispositions and chapter:
disposition_debtor,disposition_joint_debtor,chapter,chapter_previous - Flags:
is_asset,is_voluntary
docket_report entry
| Field | Type | Description |
|---|---|---|
| date | string | Filing date of the entry. |
| entry_date | string | When the entry was entered into PACER. Often the same day as the filing date, but it can be later, occasionally much later. |
| number | string | Document / filing number as a string of digits, such as "1", or null when the entry has no numeric number. |
| contents | string | The docket entry text. May contain HTML: dangerous tags are removed and only harmless styling tags such as <i> are kept. |
| link / link_viewer | string | Link to the document PDF and to the Docket Alarm document viewer, when a document is available. Download the PDF with Get Document. |
| exhibits | array | Exhibits attached to the entry, not including the main filing. See exhibits item below. |
| analyze | object | Motion / order analysis when available, including the document type, outcome (e.g. granted or denied), and timing. Produced by Docket Alarm's analysis, not by the court. May not be included in every API license; contact questions@docketalarm.com for details. See analyze object below. |
exhibits item
| Field | Type | Description |
|---|---|---|
| exhibit | string | The exhibit number or name. Unique among the exhibits for this entry. |
| link | string | Link to the exhibit PDF. |
| link_viewer | string | Link to the exhibit in the Docket Alarm viewer. |
analyze object
Contains parser_types: a list of the motions and orders identified in the entry. Docket Alarm does not claim to capture every motion, and errs on the side of accuracy.
| Field | Type | Description |
|---|---|---|
| type | string | High-level procedural tag: motion, response, reply, order, or pleading. |
| identifier | string | The specific motion or order, such as summaryjudgment. Identifiers can have parents (disqualify is the parent of disqualify_counsel) and some are ambiguous. Each one is defined in the data dictionary: JSON, Excel, RSS, with the full motion name, categories, priority, and the matching SALI code. |
| outcome | string[] | granted or denied. Often unknown. |
| days_sequence / days_decision / days_briefing | integer | Timing, on order entries where related entries can be linked. Sequence: the whole motion-to-order sequence. Decision: last responsive brief to the order. Briefing: first opening brief to last responsive brief. |
| related | array | Other docket entries this one relates to, each with index (position in docket_report) and number (filing number). |
| snippet | string | Short text highlighting the relevant motion language. |
| confidence | string | very_low, low, medium, high, or very_high. |
parties entry
| Field | Type | Description |
|---|---|---|
| name | string | Party name. name_normalized holds the normalized form when requested. |
| type | string | Party role, e.g. Plaintiff or Defendant. |
| counsel | array | Attorneys for the party, when available. See counsel item below. |
counsel item
| Field | Type | Description |
|---|---|---|
| name / name_normalized | string | The attorney's name, and its normalized form when normalize is requested. |
| firm / firm_normalized | string | The attorney's law firm, and its normalized form when normalize is requested. |
| string | Email address. | |
| phone | string | Phone number. |
| address | string[] | The attorney's address, one array item per line. |
| lead | boolean | true if the attorney is marked as lead attorney. Most courts do not distinguish lead attorneys. |
| prose | boolean | true if the party is representing themselves (pro se). Courts do not always set this, but when it is true it can be relied on. |
related entry
| Field | Type | Description |
|---|---|---|
| type | string | The relationship, such as Original Case, Related Case, Lead Case, Orange Book, or 2(d) Rejection. Contact support for the full list. |
| court / docket | string | Court and docket number of the related case. |
| title | string | Title of the related case. |
| link | string | Link to the related docket on Docket Alarm. |
You can also search on relationships. For example, related:(type:(Original Case) court:(New York)) finds cases appealed from a New York court.
claims entry
Most courts do not provide claims. To see which cases have them, run the search claim:"".
| Field | Type | Description |
|---|---|---|
| type | string | The kind of claim. Currently always charge: a criminal or administrative charge. Other types (such as civil causes of action) may be added. |
| id | string | The claim or charge count number (count 1, count 2, and so on), in courts that provide one. Usually an integer, but sent as a string. |
| description | string | Description of the claim. |
| code | string | The statute or regulation the claim is based on. |
| disposition | string | The outcome of the claim, when available. |
| date | string | The claim date, when available. |
Get Document
v1.1Download a document as a PDF. You don't normally build this URL by hand. Each entry in a docket report's docket_report includes a link (and link_viewer) that points at the correct document URL. On success the response body is the binary PDF; on error it is JSON with success: false.
Exhibits have their own URLs, with the exhibit after the document number: .../docs/{document_number}/{exhibit}.pdf. Use the link in each exhibits item.
In these links, spaces in the court name and case title become underscores, and the colon in a docket number becomes --. For example, document 47 in Barbara Grady v. RCM Technologies Inc (5:22-cv-00842, California Central District Court) is at https://www.docketalarm.com/cases/California_Central_District_Court/5--22-cv-00842/Barbara_Grady_v._RCM_Technologies_Inc/docs/47.pdf.
cached parameter and costs: Including cached in the request at all -- with any value, including cached=false -- restricts the request to Docket Alarm's already-stored copy and avoids a paid live retrieval from the court. If the document is not yet cached, you get HTTP 412 instead of a charge. To force a live retrieval from the court, omit the cached parameter entirely rather than setting it to false.
Authorization header. A login_token in the URL also still works for document links, including after v1 is retired.Headers
| Header | Type | Description |
|---|---|---|
| Authorizationrequired | string | Bearer <login_token>, using the token from login/. A login_token in the URL also works for document links. |
Parameters
| Parameter | Type | Description |
|---|---|---|
| client_matteroptional | string | Your client/matter code for billing and tracking. |
| cachedoptional | boolean | If present -- any value, including false -- only return the document if it is already cached (returns 412 if not). Omit this parameter entirely to allow a live retrieval. |
Example Request
Response
Status Codes
| Code | Meaning |
|---|---|
| 200 | Success. The response body is the PDF, not JSON. |
| 302 | Redirect. Follow the Location header (the document's link format changed). Send your credentials again on the redirected request: many HTTP clients drop the Authorization header when following a redirect. |
| 401 | A problem with logging in (check the token in your Authorization header), the document is not part of this docket (check the link), or a billing problem with the account (for example, not enough funds or the free weekly view limit reached). |
| 403 | The document is sealed, is listed on the docket but not yet available (for example, held for review or redaction), or could not be found at the court. Documents held for review can become available days later, so retry later. |
| 412 | You set cached, but the document is not in Docket Alarm's cache. |
| 500 | Likely an API bug. Contact support. |
| 502 | The servers are under heavy load. Retry later. |
Ask a Docket
v1.1Ask a natural-language question about a case and get an AI-generated answer grounded in the case record. The model can read the docket entries, the underlying documents, or both, and returns an answer formatted however you describe in output_format. Optionally include the supporting source data used to answer.
target=documents or both, the complaint must already be downloaded to Docket Alarm and OCR'd; otherwise the call fails with "Required document hasn't been downloaded yet". allow_download does not change this.Headers
| Header | Type | Description |
|---|---|---|
| Authorizationrequired | string | Bearer <login_token>, using the token from login/. In v1.1 a login_token sent as a request parameter is refused. |
| X-OpenAI-Key / X-Anthropic-Keyrequired | string | Your own OpenAI or Anthropic API key. At least one of the two is required. In v1.1 a key sent as a URL parameter is rejected. |
Parameters
| Parameter | Type | Description |
|---|---|---|
| client_matterrequired | string | Your client/matter code for billing and tracking (may be blank). |
| courtrequired | string | Court name for the case. |
| docketrequired | string | Docket number for the case. |
| questionrequired | string | The natural-language question to ask about the case. |
| targetrequired | string | What the AI should read: docket, documents, or both. |
| output_formatrequired | string | A natural-language description of how the answer should be formatted. |
| cachedoptional | boolean | Use cached case data. Default: true. Only the exact value False turns it off. |
| show_relevantoptional | boolean | If present, with any value (even false), include the docket/document data the answer was based on. Leave it out to skip that data. |
| openai_model / claude_modeloptional | string | Override the model used. Defaults: gpt-4.1 for OpenAI and claude-3-5-sonnet-20240620 for Claude. |
Example Request
Example Response
Return Values
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded; otherwise false with an error. |
| question | string | The question that was asked, echoed back. |
| price | number | The cost of the AI call. |
| date_cached | string | When the underlying case data was last cached. |
| from_dockets / from_documents | object | The answer. from_dockets is present when target includes the docket, from_documents when it includes documents. Each contains openai_answer and/or claude_answer, plus the supporting source data when show_relevant is sent: relevant_docket_data in from_dockets (the docket information the AI relied on, such as case status, entries, or filing date) and relevant_document_data in from_documents (the document it selected and any others it found relevant). With target=both, if one side fails the response is still success: true and that side is {"error": "..."} with no answer, so check each side for error. |
Case Matcher
v1.1Find a case when you don't know its exact docket number or court. Send whatever you do know, such as the state, part of the case title, party names, case type, or filing date, and AI matches it to a single case in Docket Alarm. The response includes the matched case and the AI cost of the request.
Headers
| Header | Type | Description |
|---|---|---|
| Authorizationrequired | string | Bearer <login_token>, using the token from login/. In v1.1 a login_token sent as a request parameter is refused. |
| X-OpenAI-Key / X-Anthropic-Keyrequired | string | Your own OpenAI or Anthropic API key. At least one of the two is required. In v1.1 a key sent as a URL parameter is rejected. |
Parameters
| Parameter | Type | Description |
|---|---|---|
| client_matterrequired | string | Your client/matter code for billing and tracking (may be blank). |
| any case detailrequired | string | At least one parameter describing the case, named however you like, for example state, parties, case_type, or filing_date. Every extra parameter you send is used to find the match. |
| openai_model / claude_modeloptional | string | Override the model used. Defaults: gpt-4.1 (OpenAI) and claude-3-5-sonnet-20240620 (Anthropic). |
Example Request
Example Response
Return Values
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded; otherwise false with an error, for example when no matching case is found. |
| result | object | The matched case: Case Number, Court, and Link to the case on Docket Alarm. Pass the court and case number to Get Docket to retrieve it. |
| price | number | The AI cost of the request. |
Entity Normalizer
v1.1Turn a company or person name into a ready-to-run Search query that finds that entity's cases without the false positives a plain name search returns. For example, a search for "Apple" also matches Apple Oil and Green Apple; the normalizer reviews sample results with AI and returns a query that excludes them. You can optionally include the entity's corporate group (parents and subsidiaries).
Headers
| Header | Type | Description |
|---|---|---|
| Authorizationrequired | string | Bearer <login_token>, using the token from login/. In v1.1 a login_token sent as a request parameter is refused. |
| X-OpenAI-Key / X-Anthropic-Keyrequired | string | Your own OpenAI or Anthropic API key. At least one of the two is required. In v1.1 a key sent as a URL parameter is rejected. |
Parameters
| Parameter | Type | Description |
|---|---|---|
| entityrequired | string | The company or person name to normalize, e.g. Apple. |
| include_corporate_groupoptional | flag | If present (any value), the query also covers entities in the same corporate group. |
| openai_model / claude_modeloptional | string | Override the model used. Defaults: gpt-4.1 (OpenAI) and claude-3-5-sonnet-20240620 (Anthropic). |
Example Request
Example Response
Return Values
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded; otherwise false with an error. |
| query | string | A Docket Alarm query for the normalized entity. Pass it as q to Search. |
| price | number | The AI cost of the request. |
Smart Search
v1.1Describe what you are looking for in plain English, and AI writes the Docket Alarm search query for you. The response is the query, ready to pass as q to Search, plus the AI cost of the request. Smart Search does not run the search itself.
Headers
| Header | Type | Description |
|---|---|---|
| Authorizationrequired | string | Bearer <login_token>, using the token from login/. In v1.1 a login_token sent as a request parameter is refused. |
| X-OpenAI-Key / X-Anthropic-Keyrequired | string | Your own OpenAI or Anthropic API key. At least one of the two is required. In v1.1 a key sent as a URL parameter is rejected. |
Parameters
| Parameter | Type | Description |
|---|---|---|
| instructionsrequired | string | What you want to find, in natural language. |
| openai_model / claude_modeloptional | string | Override the model used. Defaults: gpt-4.1 (OpenAI) and claude-3-5-sonnet-20240620 (Anthropic). |
Example Request
Example Response
Return Values
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded; otherwise false with an error. |
| query | string | The Docket Alarm query for your instructions. Pass it as q to Search. |
| price | number | The AI cost of the request. |
Get Cause of Action
v1.1List the causes of action in a case. Send the docket number and court, and AI reads the complaint and returns one bullet point per cause of action, explaining it and citing any relevant cases or statutes. Works for federal (PACER) and other courts.
Headers
| Header | Type | Description |
|---|---|---|
| Authorizationrequired | string | Bearer <login_token>, using the token from login/. In v1.1 a login_token sent as a request parameter is refused. |
| X-OpenAI-Key / X-Anthropic-Keyrequired | string | Your own OpenAI or Anthropic API key. At least one of the two is required. In v1.1 a key sent as a URL parameter is rejected. |
Parameters
| Parameter | Type | Description |
|---|---|---|
| docketrequired | string | Docket number, as returned by Search. |
| courtrequired | string | Court name, as returned by Search. |
| cachedoptional | boolean | Use Docket Alarm's stored copy of the docket. Default: true. Set to exactly False to pull a fresh copy from the court first, which can incur court fees. Other values, including lowercase false, keep the stored copy. |
| openai_model / claude_modeloptional | string | Override the model used. Defaults: gpt-4.1 (OpenAI) and claude-3-5-sonnet-20240620 (Anthropic). |
Example Request
Example Response
Return Values
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded; otherwise false with an error. |
| openai_answer / claude_answer | string | One bullet point per cause of action, explaining it and citing any relevant cases or statutes. openai_answer is returned when you use an OpenAI key, claude_answer when you use an Anthropic key. |
| price | number | The AI cost of the request. |
Track a Case
v1.1Start or stop tracking a case (or a saved search). When tracking is enabled, Docket Alarm checks the case at the frequency you choose and notifies you, by email and/or push notification, whenever it changes. Send a GET to the same endpoint to list the cases you are currently tracking.
Headers
| Header | Type | Description |
|---|---|---|
| Authorizationrequired | string | Bearer <login_token>, using the token from login/. In v1.1 a login_token sent as a request parameter is refused. |
Request Body (form-encoded)
| Field | Type | Description |
|---|---|---|
| courtoptional | string | Court name for the case to track. Required unless q is set. |
| docketoptional | string | Docket number for the case to track. Required unless q is set. |
| enablerequired | boolean | true to start tracking, false to stop. |
| client_matteroptional | string | Your client/matter code for billing and tracking (may be blank, up to 50 characters). Required when enable=true. |
| frequencyoptional | string | How often to check the case: realtime, continuous, 40x, twice_daily, daily, weekly, or monthly. Required when enable=true. See frequency values below for each schedule. |
| qoptional | string | A search query. Use instead of court/docket to track a saved search rather than a single case. When you send q, leave court and docket blank. New results arrive as a search_results push. |
| testoptional | boolean | If present, with any value (even false), send a test push notification with fake data to your configured callback URL, without creating or modifying a tracker. Leave it out for a normal call. |
| test_trackoptional | boolean | Synchronously send a real test push for an existing case or search tracker. |
frequency values
Every frequency except weekly runs on weekdays only (Monday to Friday).
| Value | When the case is checked |
|---|---|
| daily | Once a day at 8AM ET. |
| twice_daily | Twice a day, at 7AM and 4PM ET. |
| continuous | 16 times a day, during and after business hours to catch late filers: roughly 1AM, 3AM, 9AM, 10AM, 11AM, 12PM, 1PM, 2PM, 3PM, 4PM, 5PM, 6PM, 7PM, 8PM, 9PM, and 11PM. A popular choice. |
| 40x | 40 times a day, roughly every 15 minutes, mostly during trading hours. Turned off on most accounts by default. |
| weekly | Once a week, on Mondays. |
| monthly | Once a month, on the 1st. The day of the month can't be changed through the API. |
| realtime | Only for special ECF alerts that don't need polling. Not available in most cases. |
Example Request
Example Response
Some courts can't be checked at continuous or 40x. The tracker is then saved at the first of twice_daily, daily or monthly that the court offers, and the response is still success: true, with the substitution spelled out:
If the court offers none of those, the call fails with This court cannot be alerted at 40x and has no lower frequency available.
Listing tracked cases
Send a GET to the same endpoint, with the same Authorization header, to list the cases and searches you are currently tracking.
| Parameter | Type | Description |
|---|---|---|
| offsetoptional | integer | Starting position in your tracker list. Default: 0. Max: 5000. |
| limitoptional | integer | Maximum trackers to return. Default: 20. Max: 50. |
Example Request
Example Response
Each tracker returns its court, docket, title, link, enabled state, frequency, client_matter, and datetime_updated (ISO 8601, in UTC). A tracker that has attempted a push also returns _api_push_debug_info.
_api_push_debug_info object
Included on a tracker that has attempted at least one push notification. Use it only for manual debugging: it is not covered by the versioning policy and may be removed without notice, so don't build it into an automated system.
| Field | Type | Description |
|---|---|---|
| response_code | integer | The HTTP status your server returned to the last push. |
| request_url | string | The URL the last push was sent to. |
| request_payload | string | The payload of the last push, up to its first 16KB. |
| request_payload_truncated | boolean | Whether request_payload was cut to its first 16KB. |
| request_start_time / request_end_time | string | When the last push started and finished. |
| will_retry | boolean | true if Docket Alarm will retry the push. |
| error_message | string | Extra detail about the error, when there is one. |
Push Notifications
All versionsInstead of polling, you can have Docket Alarm push updates to you. When a tracked event is detected, Docket Alarm sends an HTTP POST request to a callback URL you configure. This is the delivery mechanism behind Track a Case.
Configuring your endpoint
Set your callback URL yourself under API Webhook on your account page (Membership Details). The field appears once API access is enabled on your account. For good security, use an HTTPS URL with basic-auth credentials, for example https://user:password@example.com/webhook. If you don't see the field, email support@docketalarm.com.
What triggers a notification
| push_type | Trigger |
|---|---|
| docket | A new docket entry is detected on a case you track. |
| search_results | A new result matches a saved search (new lawsuits, or new documents across many cases). |
| new_case | A new federal case is filed that matches a New PACER Case alert (by nature of suit, and optionally party name). These alerts are set up on the website under New Case Alerts > Federal District and cannot be created through the API. |
Payload
Docket Alarm POSTs a JSON body whose fields depend on push_type. A new docket-item notification looks like:
Every payload includes push_type and client_matter (the value you set on the tracker). In a docket push, info, docket_report, and parties have the same structure as in Get Docket, but docket_report holds only the new entries.
search_results push (a saved search tracked with q)
| Field | Type | Description |
|---|---|---|
| push_type | string | Always search_results. |
| client_matter | string | The value set on the tracker. |
| q | string | The query that was run. |
| link | string | A relative link to the search results on Docket Alarm. |
| title | string | A human-readable description of the search. |
| search_results | array | The new results, in the same format as Search results. |
new_case push (a New PACER Case alert)
| Field | Type | Description |
|---|---|---|
| push_type | string | Always new_case. |
| client_matter | string | The value set on the alert. |
| party_name | string | The party name the alert searches for, if one was set. |
| nature_of_suit | string[] | The nature of suit codes the alert is limited to. See nature_of_suits in Search PACER for the list. |
| search_results | array | The new cases, in the same format as Search PACER results. |
Responding and retries
Your endpoint must return HTTP 200. If Docket Alarm receives a non-200 response, it retries up to 10 times with exponentially increasing delays, from a minimum of 10 minutes up to a maximum of 4 hours.
Testing and debugging
To simulate a push without changing a tracker, add test=true to a POST to track/ -- Docket Alarm ignores every other parameter and sends a notification with fixed, fake data, so you can check your endpoint is wired up correctly. To test against a real existing tracker instead, use test_track=true along with the court/docket or q identifying it -- Docket Alarm synchronously sends a notification with that tracker's actual current results, without editing the tracker. The track/ GET response also includes an _api_push_debug_info object on each tracker to help troubleshoot delivery (see Track a Case). Use it for manual debugging only: it is not covered by the versioning policy and may be removed without notice.
v1 Endpoint Reference
DeprecatedAuthorization header. Each v1 endpoint has a v1.1 version with the same name. To move an existing integration, see Moving from v1 to v1.1.
This is the original v1 reference, kept for existing integrations.
Login
Deprecatedv1Parameters
| Parameter | Type | Description |
|---|---|---|
| usernamerequired | string | Your Docket Alarm account username (usually your email address). |
| passwordrequired | string | Your Docket Alarm account password. |
Example Request
Example Response
Search
Deprecatedv1Full-text search across Docket Alarm's database of dockets and documents from federal courts, state courts, the PTAB, the USPTO, and other jurisdictions. The query syntax supports field filters (e.g. is:docket, court:("N.D. Cal.")) and boolean operators. Each result is either a docket or a document, indicated by result_type.
This is the recommended way to find cases. It only finds cases Docket Alarm has already collected; to search PACER live, use Search PACER.
Parameters
| Parameter | Type | Description |
|---|---|---|
| login_tokenrequired | string | Login token from login/. |
| qrequired | string | URL-encoded search query. Supports full-text terms, party names, case numbers, field filters, and boolean operators. See the query syntax guide. |
| ooptional | string | Sort order:
|
| limitoptional | integer | Results per page. Default: 8. Max: 50. |
| offsetoptional | integer | Result offset for paging. offset + limit can be at most 5000; to go further, see Paging below. |
| client_matteroptional | string | Your own client/matter code for billing and tracking. |
Example Request
Example Response
Return Values
A successful response contains the following top-level fields.
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded. On failure it is false and an error field describes the problem. |
| count | integer | Total number of results that match the query, not just those returned on this page. |
| search_results | array | The matching results for this page. See search_results item below. |
search_results item
| Field | Type | Description |
|---|---|---|
| result_type | string | Whether this result is a docket or a document. Other result types (for example statutes, people, or companies) may be added in future, so handle unknown values gracefully. |
| court | string | The court the result belongs to. |
| docket | string | Docket number / case identifier. |
| title | string | Case caption (for dockets) or document title (for documents). |
| date_filed | string | Filing date of the case or document. |
| link | string | URL to the full record on Docket Alarm. |
| link_viewer / filename | string | Document viewer URL and filename. Present on document results only. |
| date_cached / datetime_cached | string | When Docket Alarm last pulled the docket from the court: date_cached is the date, datetime_cached the full timestamp in ISO 8601 format, in UTC. Present on docket results only. |
| cache_unofficial | boolean | true if the docket came from an unofficial source, such as GPO or a PACER RSS feed, rather than the court's own docket. Present on docket results only. |
Paging
Use offset/limit to page through your results -- set offset to the number of results you've already seen and limit to how many you want next.
Beyond 5,000 results, use date bucketing. offset + limit can be at most 5,000, so a query with more matches than the cap cannot be paged to the end with offset alone. Instead, split the query into date ranges (each under the cap) with the from:/to: filters and page through each range. to: is exclusive (< the date) while from: is inclusive (≥), so make the ranges contiguous by reusing the boundary date -- the next range's from: equals the previous range's to: (do not add a day, or you drop it):
Search PACER
Deprecatedv1Run a live search directly against PACER (federal courts) using PACER's own party and case-locator fields. This searches PACER in real time rather than the Docket Alarm index. A request that sends only login_token and client_matter returns the list of available parameter options. Results are paginated with page (see page_max in the response).
Reach for Search PACER when you need brand-new federal filings sooner than they reach Docket Alarm, which indexes newly filed federal cases within 24 hours of filing at most.
Parameters
| Parameter | Type | Description |
|---|---|---|
| login_tokenrequired | string | Login token from login/. |
| client_matterrequired | string | Your client/matter code for billing and tracking (may be blank). |
| party_nameoptional | string | A company name, or an individual's last name. |
| first_name / last_nameoptional | string | First and last name when searching for an individual. Cannot be combined with party_name. |
| middle_nameoptional | string | Middle name when searching for an individual. Cannot be combined with party_name. |
| nature_of_suitoptional | string[] | One or more Nature of Suit (NOS) codes to filter by, such as 830 (the code alone, not 830 Patent). Get the valid codes, the keys of nature_of_suits, from Discovering valid options below. |
| case_typeoptional | string | Restrict to a case type: Appellate, Bankruptcy, Civil, Criminal, or Multi-District Litigation. Leave blank to search all case types. |
| date_filed_start / date_filed_endoptional | date | Filter to cases filed on or after the start date and on or before the end date (YYYY-MM-DD). |
| date_terminated_start / date_terminated_endoptional | date | Filter to cases terminated on or after the start date and on or before the end date. |
| court_regionoptional | string | Limit to cases filed in one region. Get the valid values from court_regions in Discovering valid options below. |
| docket_numoptional | string | Limit to cases with this docket number. Use it when you know the docket number but not the court. |
| mdl_idoptional | string | Find a Multi-District Litigation by its MDL ID number. Requires case_type set to Multi-District Litigation. |
| pageoptional | integer | Page number (1-based) for paginating results. Run the search once (page 1) before requesting a later page. |
| ssn_tidoptional | string | The nine-digit Social Security number or federal tax ID of a party to the case. case_type must be Bankruptcy. |
| ssn4optional | string | The last four digits of a party's Social Security number. case_type must be Bankruptcy, and party_name must also be set. |
Example Request
Example Response
Return Values
A successful response contains the following top-level fields.
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded. On failure it is false and an error field describes the problem. |
| page_max | integer | Up to 50 results are returned per search. When more than 50 cases match, this is the number of pages of data available; retrieve the rest with the page parameter.Known issue: when there are thousands of results, page_max may be under-reported on page 1. Rely on it from page 2 onward. |
| search_results | array | The matching federal cases for this page. See search_results item below. |
search_results item
| Field | Type | Description |
|---|---|---|
| title | string | Case title. |
| court | string | PACER court the case is in. |
| docket | string | Docket number / case identifier. |
| date_filed | string | Date the case was filed. |
| link | string | URL to the docket on Docket Alarm. |
| nature_of_suitoptional | string | Nature of Suit (NOS) code. Bankruptcy cases do not have one. |
| date_terminatedoptional | string | Date the case was terminated, if it has closed. |
| party_nameoptional | string | Full party name. Returned when you searched by party_name. |
| party_roleoptional | string | The party's role in the case, for example Plaintiff or Defendant. |
Discovering valid options
Send a request with only login_token and client_matter (no search fields) to retrieve the values this endpoint accepts. The response is a set of reference lists you can use to build a valid search.
Example Request
Example Response
| Field | Description |
|---|---|
| courts | The PACER courts this endpoint can search. |
| court_regions | Valid values for the court_region parameter. |
| nature_of_suits | Valid Nature of Suit (NOS) codes for the nature_of_suit parameter. |
| case_types | Valid values for the case_type parameter. |
Get Docket
Deprecatedv1Retrieve a full case: normalized case info, the complete docket_report (every entry, with links to any documents), and the parties and their counsel. Results are normalized across all supported jurisdictions.
cached parameter and costs: By default Docket Alarm pulls the docket live from the court, which can incur PACER and per-page charges. Set cached=true to return Docket Alarm's already-stored copy and avoid those charges. We recommend always setting cached=true unless you specifically need the very latest filings, since leaving it false triggers a live pull and can cost money on every call.
Parameters
| Parameter | Type | Description |
|---|---|---|
| login_tokenrequired | string | Login token from login/. |
| client_matterrequired | string | Your client/matter code for billing and tracking (may be blank). |
| courtrequired | string | Court name, exactly as Docket Alarm names it, e.g. California Northern District Court. Use the court value from a search result or push notification. |
| docketrequired | string | Docket number / case identifier, e.g. 5:11-cv-01846. Use the docket value from a search result or push notification. |
| cachedoptional | boolean | If true, return the cached docket instead of pulling live from the court. Recommended. Default behavior pulls live and may incur costs. Check info.datetime_cached in the response to see how fresh the copy is. |
| formatoptional | string | Response format:
|
| normalizeoptional | boolean | If true, include normalized party, attorney, firm, and judge names (the *_normalized fields below). Default: false, which may change in future. Normalization is well tested but not perfect. |
| use_last_filing_dateoptional | boolean | PACER dockets only. Only with cached off: sending this option together with cached=true, even as false, fails with "Cannot set downloader options for cached dockets." Skip the live pull if there has been no new activity since the last filing date, reducing PACER fees. Docket Alarm can check the latest filing date for free, so a docket with no new filings costs nothing to check. Two trade-offs: if an existing entry is changed (rather than a new one added), the update is missed; and if there are new filings, the docket is pulled normally and PACER fees apply. Useful when you only care about new filings. |
| pacer_summary_pageoptional | boolean | Only with cached off, like use_last_filing_date. PACER dockets only. Also pull the PACER Summary page, which adds disposition to info. Costs an extra $0.10, and up to $3.00 if the summary is very large. |
Example Request
Example Response
Return Values
A successful response contains the following top-level fields.
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded. On failure it is false and an error field describes the problem. |
| info | object | Normalized case information (title, judges, dates, and more). See info object below. |
| docket_report | array | Every docket entry for the case, in order. See docket_report entry below. |
| parties | array | The parties to the case and their counsel. See parties entry below. |
| related | array | Related cases, when available. See related entry below. |
| claims | array | Claims or charges, when available. Most courts do not provide them. See claims entry below. |
info object
| Field | Type | Description |
|---|---|---|
| title | string | Case caption / title. |
| date_filed | string | Date the case was filed. |
| link | string | URL of the page on Docket Alarm that shows the full docket. |
| judges | string[] | Presiding judge(s). judges_normalized holds normalized names when normalize is requested. |
| judgeDeprecated | string | A single presiding judge. Kept for backwards compatibility; use judges instead. |
| magistrate | string | The magistrate judge on the case. Federal cases only. |
| nature_of_suit | string | Nature of Suit (NOS) code. See nature_of_suits in Search PACER for the list. |
| type / status / cause | string | Case type, current status, and the cause of action. type and status are not available for federal cases, vary from court to court, and are not normalized. cause is available for federal cases only. |
| division | string | The sub-court or division, in courts that have one. |
| date_terminated | string | Date the case was terminated, if closed. |
| demand | string | The type of demand made by the plaintiff. Federal cases only. |
| flags | string[] | Case flags, usually in capitals (for example JURY). Federal cases only. |
| disposition | string | How the case was resolved. Available in a number of state courts, and for federal district courts with pacer_summary_page (extra PACER fee). |
| patents | string[] | Patent numbers at issue. Available for PTAB cases, and for federal court cases where Docket Alarm has already pulled the complaint (which usually lists every patent in suit). |
| date_cached / datetime_cached | string | When Docket Alarm last pulled this docket from the court: date_cached is the date, datetime_cached the full timestamp in ISO 8601 format, in UTC. |
| cache_unofficial | boolean | true if Docket Alarm did not get this docket from an official court source. |
Bankruptcy fields in info
Bankruptcy cases can include these dates, deadlines, and dispositions. Some, none, or all may be present depending on the stage of the bankruptcy. All are strings except is_asset and is_voluntary, which are booleans.
- Dates:
date_debtor_discharged,date_joint_debtor_discharged,date_341_meeting,date_plan_confirmed,date_discharged,date_converted - Deadlines:
date_deadline_object_discharge,date_deadline_financial_mgmt_course,date_deadline_filing_claims - Dispositions and chapter:
disposition_debtor,disposition_joint_debtor,chapter,chapter_previous - Flags:
is_asset,is_voluntary
docket_report entry
| Field | Type | Description |
|---|---|---|
| date | string | Filing date of the entry. |
| entry_date | string | When the entry was entered into PACER. Often the same day as the filing date, but it can be later, occasionally much later. |
| number | string | Document / filing number as a string of digits, such as "1", or null when the entry has no numeric number. |
| contents | string | The docket entry text. May contain HTML: dangerous tags are removed and only harmless styling tags such as <i> are kept. |
| link / link_viewer | string | Link to the document PDF and to the Docket Alarm document viewer, when a document is available. Download the PDF with Get Document. |
| exhibits | array | Exhibits attached to the entry, not including the main filing. See exhibits item below. |
| analyze | object | Motion / order analysis when available, including the document type, outcome (e.g. granted or denied), and timing. Produced by Docket Alarm's analysis, not by the court. May not be included in every API license; contact questions@docketalarm.com for details. See analyze object below. |
exhibits item
| Field | Type | Description |
|---|---|---|
| exhibit | string | The exhibit number or name. Unique among the exhibits for this entry. |
| link | string | Link to the exhibit PDF. |
| link_viewer | string | Link to the exhibit in the Docket Alarm viewer. |
analyze object
Contains parser_types: a list of the motions and orders identified in the entry. Docket Alarm does not claim to capture every motion, and errs on the side of accuracy.
| Field | Type | Description |
|---|---|---|
| type | string | High-level procedural tag: motion, response, reply, order, or pleading. |
| identifier | string | The specific motion or order, such as summaryjudgment. Identifiers can have parents (disqualify is the parent of disqualify_counsel) and some are ambiguous. Each one is defined in the data dictionary: JSON, Excel, RSS, with the full motion name, categories, priority, and the matching SALI code. |
| outcome | string[] | granted or denied. Often unknown. |
| days_sequence / days_decision / days_briefing | integer | Timing, on order entries where related entries can be linked. Sequence: the whole motion-to-order sequence. Decision: last responsive brief to the order. Briefing: first opening brief to last responsive brief. |
| related | array | Other docket entries this one relates to, each with index (position in docket_report) and number (filing number). |
| snippet | string | Short text highlighting the relevant motion language. |
| confidence | string | very_low, low, medium, high, or very_high. |
parties entry
| Field | Type | Description |
|---|---|---|
| name | string | Party name. name_normalized holds the normalized form when requested. |
| type | string | Party role, e.g. Plaintiff or Defendant. |
| counsel | array | Attorneys for the party, when available. See counsel item below. |
counsel item
| Field | Type | Description |
|---|---|---|
| name / name_normalized | string | The attorney's name, and its normalized form when normalize is requested. |
| firm / firm_normalized | string | The attorney's law firm, and its normalized form when normalize is requested. |
| string | Email address. | |
| phone | string | Phone number. |
| address | string[] | The attorney's address, one array item per line. |
| lead | boolean | true if the attorney is marked as lead attorney. Most courts do not distinguish lead attorneys. |
| prose | boolean | true if the party is representing themselves (pro se). Courts do not always set this, but when it is true it can be relied on. |
related entry
| Field | Type | Description |
|---|---|---|
| type | string | The relationship, such as Original Case, Related Case, Lead Case, Orange Book, or 2(d) Rejection. Contact support for the full list. |
| court / docket | string | Court and docket number of the related case. |
| title | string | Title of the related case. |
| link | string | Link to the related docket on Docket Alarm. |
You can also search on relationships. For example, related:(type:(Original Case) court:(New York)) finds cases appealed from a New York court.
claims entry
Most courts do not provide claims. To see which cases have them, run the search claim:"".
| Field | Type | Description |
|---|---|---|
| type | string | The kind of claim. Currently always charge: a criminal or administrative charge. Other types (such as civil causes of action) may be added. |
| id | string | The claim or charge count number (count 1, count 2, and so on), in courts that provide one. Usually an integer, but sent as a string. |
| description | string | Description of the claim. |
| code | string | The statute or regulation the claim is based on. |
| disposition | string | The outcome of the claim, when available. |
| date | string | The claim date, when available. |
Get Document
Deprecatedv1Download a document as a PDF. You don't normally build this URL by hand. Each entry in a docket report's docket_report includes a link (and link_viewer) that points at the correct document URL. On success the response body is the binary PDF; on error it is JSON with success: false.
Exhibits have their own URLs, with the exhibit after the document number: .../docs/{document_number}/{exhibit}.pdf. Use the link in each exhibits item.
In these links, spaces in the court name and case title become underscores, and the colon in a docket number becomes --. For example, document 47 in Barbara Grady v. RCM Technologies Inc (5:22-cv-00842, California Central District Court) is at https://www.docketalarm.com/cases/California_Central_District_Court/5--22-cv-00842/Barbara_Grady_v._RCM_Technologies_Inc/docs/47.pdf.
cached parameter and costs: Including cached in the request at all -- with any value, including cached=false -- restricts the request to Docket Alarm's already-stored copy and avoids a paid live retrieval from the court. If the document is not yet cached, you get HTTP 412 instead of a charge. To force a live retrieval from the court, omit the cached parameter entirely rather than setting it to false.
Parameters
| Parameter | Type | Description |
|---|---|---|
| login_tokenrequired | string | Login token from login/. |
| client_matteroptional | string | Your client/matter code for billing and tracking. |
| cachedoptional | boolean | If present -- any value, including false -- only return the document if it is already cached (returns 412 if not). Omit this parameter entirely to allow a live retrieval. |
Example Request
Response
Status Codes
| Code | Meaning |
|---|---|
| 200 | Success. The response body is the PDF, not JSON. |
| 302 | Redirect. Follow the Location header (the document's link format changed). Send your credentials again on the redirected request: many HTTP clients drop the Authorization header when following a redirect. |
| 401 | A problem with logging in (check your login_token), the document is not part of this docket (check the link), or a billing problem with the account (for example, not enough funds or the free weekly view limit reached). |
| 403 | The document is sealed, is listed on the docket but not yet available (for example, held for review or redaction), or could not be found at the court. Documents held for review can become available days later, so retry later. |
| 412 | You set cached, but the document is not in Docket Alarm's cache. |
| 500 | Likely an API bug. Contact support. |
| 502 | The servers are under heavy load. Retry later. |
Ask a Docket
Deprecatedv1Ask a natural-language question about a case and get an AI-generated answer grounded in the case record. The model can read the docket entries, the underlying documents, or both, and returns an answer formatted however you describe in output_format. Optionally include the supporting source data used to answer.
target=documents or both, the complaint must already be downloaded to Docket Alarm and OCR'd; otherwise the call fails with "Required document hasn't been downloaded yet". allow_download does not change this.Parameters
| Parameter | Type | Description |
|---|---|---|
| login_tokenrequired | string | Login token from login/. |
| client_matterrequired | string | Your client/matter code for billing and tracking (may be blank). |
| courtrequired | string | Court name for the case. |
| docketrequired | string | Docket number for the case. |
| questionrequired | string | The natural-language question to ask about the case. |
| targetrequired | string | What the AI should read: docket, documents, or both. |
| output_formatrequired | string | A natural-language description of how the answer should be formatted. |
| cachedoptional | boolean | Use cached case data. Default: true. Only the exact value False turns it off. |
| show_relevantoptional | boolean | If present, with any value (even false), include the docket/document data the answer was based on. Leave it out to skip that data. |
| openai_model / claude_modeloptional | string | Override the model used. Defaults: gpt-4.1 for OpenAI and claude-3-5-sonnet-20240620 for Claude. |
| openai_key / anthropic_keyrequired | string | Your own API key to run the request against, sent as the openai_key or anthropic_key query parameter. At least one of the two is required. |
Example Request
Example Response
Return Values
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded; otherwise false with an error. |
| question | string | The question that was asked, echoed back. |
| price | number | The cost of the AI call. |
| date_cached | string | When the underlying case data was last cached. |
| from_dockets / from_documents | object | The answer. from_dockets is present when target includes the docket, from_documents when it includes documents. Each contains openai_answer and/or claude_answer, plus the supporting source data when show_relevant is sent: relevant_docket_data in from_dockets (the docket information the AI relied on, such as case status, entries, or filing date) and relevant_document_data in from_documents (the document it selected and any others it found relevant). With target=both, if one side fails the response is still success: true and that side is {"error": "..."} with no answer, so check each side for error. |
Case Matcher
Deprecatedv1Find a case when you don't know its exact docket number or court. Send whatever you do know, such as the state, part of the case title, party names, case type, or filing date, and AI matches it to a single case in Docket Alarm. The response includes the matched case and the AI cost of the request.
Parameters
| Parameter | Type | Description |
|---|---|---|
| login_tokenrequired | string | Login token from login/. |
| client_matterrequired | string | Your client/matter code for billing and tracking (may be blank). |
| any case detailrequired | string | At least one parameter describing the case, named however you like, for example state, parties, case_type, or filing_date. Every extra parameter you send is used to find the match. |
| openai_model / claude_modeloptional | string | Override the model used. Defaults: gpt-4.1 (OpenAI) and claude-3-5-sonnet-20240620 (Anthropic). |
| openai_key / anthropic_keyrequired | string | Your own API key to run the request against. At least one of the two is required. |
Example Request
Example Response
Return Values
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded; otherwise false with an error, for example when no matching case is found. |
| result | object | The matched case: Case Number, Court, and Link to the case on Docket Alarm. Pass the court and case number to Get Docket to retrieve it. |
| price | number | The AI cost of the request. |
Entity Normalizer
Deprecatedv1Turn a company or person name into a ready-to-run Search query that finds that entity's cases without the false positives a plain name search returns. For example, a search for "Apple" also matches Apple Oil and Green Apple; the normalizer reviews sample results with AI and returns a query that excludes them. You can optionally include the entity's corporate group (parents and subsidiaries).
Parameters
| Parameter | Type | Description |
|---|---|---|
| login_tokenrequired | string | Login token from login/. |
| entityrequired | string | The company or person name to normalize, e.g. Apple. |
| include_corporate_groupoptional | flag | If present (any value), the query also covers entities in the same corporate group. |
| openai_model / claude_modeloptional | string | Override the model used. Defaults: gpt-4.1 (OpenAI) and claude-3-5-sonnet-20240620 (Anthropic). |
| openai_key / anthropic_keyrequired | string | Your own API key to run the request against. At least one of the two is required. |
Example Request
Example Response
Return Values
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded; otherwise false with an error. |
| query | string | A Docket Alarm query for the normalized entity. Pass it as q to Search. |
| price | number | The AI cost of the request. |
Smart Search
Deprecatedv1Describe what you are looking for in plain English, and AI writes the Docket Alarm search query for you. The response is the query, ready to pass as q to Search, plus the AI cost of the request. Smart Search does not run the search itself.
Parameters
| Parameter | Type | Description |
|---|---|---|
| login_tokenrequired | string | Login token from login/. |
| instructionsrequired | string | What you want to find, in natural language. |
| openai_model / claude_modeloptional | string | Override the model used. Defaults: gpt-4.1 (OpenAI) and claude-3-5-sonnet-20240620 (Anthropic). |
| openai_key / anthropic_keyrequired | string | Your own API key to run the request against. At least one of the two is required. |
Example Request
Example Response
Return Values
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded; otherwise false with an error. |
| query | string | The Docket Alarm query for your instructions. Pass it as q to Search. |
| price | number | The AI cost of the request. |
Get Cause of Action
Deprecatedv1List the causes of action in a case. Send the docket number and court, and AI reads the complaint and returns one bullet point per cause of action, explaining it and citing any relevant cases or statutes. Works for federal (PACER) and other courts.
Parameters
| Parameter | Type | Description |
|---|---|---|
| login_tokenrequired | string | Login token from login/. |
| docketrequired | string | Docket number, as returned by Search. |
| courtrequired | string | Court name, as returned by Search. |
| cachedoptional | boolean | Use Docket Alarm's stored copy of the docket. Default: true. Set to exactly False to pull a fresh copy from the court first, which can incur court fees. Other values, including lowercase false, keep the stored copy. |
| openai_model / claude_modeloptional | string | Override the model used. Defaults: gpt-4.1 (OpenAI) and claude-3-5-sonnet-20240620 (Anthropic). |
| openai_key / anthropic_keyrequired | string | Your own API key to run the request against. At least one of the two is required. |
Example Request
Example Response
Return Values
| Field | Type | Description |
|---|---|---|
| success | boolean | true when the request succeeded; otherwise false with an error. |
| openai_answer / claude_answer | string | One bullet point per cause of action, explaining it and citing any relevant cases or statutes. openai_answer is returned when you use an OpenAI key, claude_answer when you use an Anthropic key. |
| price | number | The AI cost of the request. |
Track a Case
Deprecatedv1Start or stop tracking a case (or a saved search). When tracking is enabled, Docket Alarm checks the case at the frequency you choose and notifies you, by email and/or push notification, whenever it changes. Send a GET to the same endpoint to list the cases you are currently tracking.
Request Body (form-encoded)
| Field | Type | Description |
|---|---|---|
| login_tokenrequired | string | Login token from login/. |
| courtoptional | string | Court name for the case to track. Required unless q is set. |
| docketoptional | string | Docket number for the case to track. Required unless q is set. |
| enablerequired | boolean | true to start tracking, false to stop. |
| client_matteroptional | string | Your client/matter code for billing and tracking (may be blank, up to 50 characters). Required when enable=true. |
| frequencyoptional | string | How often to check the case: realtime, continuous, 40x, twice_daily, daily, weekly, or monthly. Required when enable=true. See frequency values below for each schedule. |
| qoptional | string | A search query. Use instead of court/docket to track a saved search rather than a single case. When you send q, leave court and docket blank. New results arrive as a search_results push. |
| testoptional | boolean | If present, with any value (even false), send a test push notification with fake data to your configured callback URL, without creating or modifying a tracker. Leave it out for a normal call. |
| test_trackoptional | boolean | Synchronously send a real test push for an existing case or search tracker. |
frequency values
Every frequency except weekly runs on weekdays only (Monday to Friday).
| Value | When the case is checked |
|---|---|
| daily | Once a day at 8AM ET. |
| twice_daily | Twice a day, at 7AM and 4PM ET. |
| continuous | 16 times a day, during and after business hours to catch late filers: roughly 1AM, 3AM, 9AM, 10AM, 11AM, 12PM, 1PM, 2PM, 3PM, 4PM, 5PM, 6PM, 7PM, 8PM, 9PM, and 11PM. A popular choice. |
| 40x | 40 times a day, roughly every 15 minutes, mostly during trading hours. Turned off on most accounts by default. |
| weekly | Once a week, on Mondays. |
| monthly | Once a month, on the 1st. The day of the month can't be changed through the API. |
| realtime | Only for special ECF alerts that don't need polling. Not available in most cases. |
Example Request
Example Response
Some courts can't be checked at continuous or 40x. The tracker is then saved at the first of twice_daily, daily or monthly that the court offers, and the response is still success: true, with the substitution spelled out:
If the court offers none of those, the call fails with This court cannot be alerted at 40x and has no lower frequency available.
Listing tracked cases
Send a GET to the same endpoint to list the cases and searches you are currently tracking.
| Parameter | Type | Description |
|---|---|---|
| login_tokenrequired | string | Login token from login/. |
| offsetoptional | integer | Starting position in your tracker list. Default: 0. Max: 5000. |
| limitoptional | integer | Maximum trackers to return. Default: 20. Max: 50. |
Example Request
Example Response
Each tracker returns its court, docket, title, link, enabled state, frequency, client_matter, and datetime_updated (ISO 8601, in UTC). A tracker that has attempted a push also returns _api_push_debug_info.
_api_push_debug_info object
Included on a tracker that has attempted at least one push notification. Use it only for manual debugging: it is not covered by the versioning policy and may be removed without notice, so don't build it into an automated system.
| Field | Type | Description |
|---|---|---|
| response_code | integer | The HTTP status your server returned to the last push. |
| request_url | string | The URL the last push was sent to. |
| request_payload | string | The payload of the last push, up to its first 16KB. |
| request_payload_truncated | boolean | Whether request_payload was cut to its first 16KB. |
| request_start_time / request_end_time | string | When the last push started and finished. |
| will_retry | boolean | true if Docket Alarm will retry the push. |
| error_message | string | Extra detail about the error, when there is one. |
