eCourts Party Case Scraper avatar

eCourts Party Case Scraper

Under maintenance

Pricing

from $3.99 / 1,000 results

Go to Apify Store
eCourts Party Case Scraper

eCourts Party Case Scraper

Under maintenance

Search court cases by party name on Indian eCourts services. Supports fetching states, districts, complexes, and establishments.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Coding Frontned

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

24

Total users

2

Monthly active users

9 days ago

Last modified

Share

What this Actor does

eCourts Party Case Scraper searches public Indian court case listings by party name and can fetch the state, district, court-complex, and establishment choices shown by the official eCourts services.

Use the location modes to look up current codes, then use those codes to narrow a party search. If you leave a location level out of a search, the Actor expands that level and searches the locations below it.

Common uses

  • Find public cases associated with a petitioner or respondent name.
  • Narrow a search to a state, district, court complex, or establishment.
  • Fetch current eCourts location codes for use in later runs.
  • Collect results from multiple matching court locations in one search.

Get started

  1. For search mode, add your CAPTCHA solver key as the CAPTCHA_API_KEY secret in the Actor's environment settings. Do not put the key in the input JSON. Location modes do not need this secret.
  2. Open the Input tab, select a mode, and fill in its required fields. For search, provide a party name and a four-digit registration year. The location fields can be left blank to broaden the search.
  3. Start the run. Open Results for case or location records. Check the separate Output summary link for the final status and saved-record count.

Inputs

mode is required by the input schema and defaults to search in the Apify form. Search mode additionally requires partyName and registrationYear. Other fields are required only for the modes described in the table.

FieldTypeRequired?DefaultWhat it does
modeTextRequiredsearchChoose get_states, get_districts, get_complexes, get_establishments, or search.
partyNameTextRequired for search; otherwise optionalNone (form prefill: Sharma)Petitioner or respondent name to search. No length bound is declared.
registrationYearTextRequired for search; otherwise optionalNone (form prefill: 2025)Four-digit case registration year (^[0-9]{4}$).
stateCodeTextRequired for get_districts, get_complexes, and get_establishments; optional for searchNone (form prefill: 26)State code. No pattern bound is declared. In search mode, leaving it out expands across all available states.
districtCodeTextRequired for get_complexes and get_establishments; optional for searchNone (form prefill: 11)District code with no pattern bound declared. It must be used with stateCode.
complexCodeTextRequired for get_establishments; optional for searchNone (form prefill: 1260012@1,2,3,4@Y)Court-complex value with no pattern bound declared. It must be used with a state and district. A full value ending in @Y expands to its establishments when estCode is omitted.
estCodeTextOptionalNoneEstablishment code with no pattern bound declared. It can be used only with complexCode.
caseStatusTextOptionalBothIn search mode, choose Both, Pending, or Disposed (the only allowed values).

The following advanced settings are optional. Their defaults apply when omitted.

FieldTypeRequired?DefaultWhat it does
maxCaptchaRetriesIntegerOptional3 (minimum 1, maximum 5)Maximum CAPTCHA solver submissions for one concrete location. Search mode needs the CAPTCHA_API_KEY environment secret.
maxSessionAttemptsIntegerOptional30 (minimum 1, maximum 30)Fresh browser sessions allowed in the base retry cycle.
cascadeReserveAttemptsIntegerOptional60 (minimum 0, maximum 120)Extra sessions per search retry cycle for resuming a multi-location search. Location modes ignore this setting.
cascadeRetryCyclesIntegerOptional5 (minimum 1, maximum 5)Maximum complete retry cycles for search mode.
cascadeRetryDelayMsIntegerOptional30000 (minimum 0, maximum 120000)Cooldown in milliseconds between complete retry cycles.
proxyCountryFallbacksArray of textOptional["GB", "US", "IN"] (up to 5 unique two-letter country codes, optionally followed by _ and two more letters)Countries used in sequence for fresh proxy routes. Ignored when custom proxyUrls are supplied.
proxyConfigurationObjectOptionaluseApifyProxy: true, apifyProxyGroups: ["RESIDENTIAL"], apifyProxyCountry: "IN"; no proxyUrlsConfigure proxy use. Nested fields are useApifyProxy (Boolean), apifyProxyGroups (array of text), apifyProxyCountry (text), and proxyUrls (array of text, no default). Keep any custom proxy URLs and credentials private.

The nested proxyConfiguration fields have these defaults and bounds:

FieldTypeRequired?DefaultBoundsWhat it does
useApifyProxyBooleanOptionaltrueNone declaredTurns the Apify-managed proxy route on or off.
apifyProxyGroupsArray of textOptional["RESIDENTIAL"]No item-count bound declaredSelects Apify Proxy groups.
apifyProxyCountryTextOptionalINNone declaredSets the configured country route when country rotation does not override it.
proxyUrlsArray of textOptionalNoneNo item-count bound declaredSupplies custom proxy URLs. Never include credential values in shared inputs or documentation.

The Actor also accepts the existing snake-case aliases for the corresponding camel-case fields, such as party_name, registration_year, state_code, case_status, and proxy_configuration. New inputs should use the camel-case names in the tables.

Input examples

Fetch the state list:

{
"mode": "get_states"
}

Fetch districts for a state, then use a returned district code to fetch its complexes:

{
"mode": "get_districts",
"stateCode": "26"
}
{
"mode": "get_complexes",
"stateCode": "26",
"districtCode": "11"
}

Fetch establishments for a full complex value returned by get_complexes:

{
"mode": "get_establishments",
"stateCode": "26",
"districtCode": "11",
"complexCode": "1260012@1,2,3,4@Y"
}

Run a scoped party search. The location values are examples; use the location modes to check the current codes before relying on them.

{
"mode": "search",
"partyName": "Sharma",
"registrationYear": "2025",
"caseStatus": "Pending",
"stateCode": "26",
"districtCode": "11",
"complexCode": "1260012@1,2,3,4@Y"
}

To search across all locations, omit the location fields. The Actor does not provide a result-count limit; use the narrowest location scope that meets your needs.

Results

The dataset contains one case record per unique matching case in search mode. Location modes return one row for each state, district, complex, or establishment selected by the mode. Unavailable optional values are omitted; for example, _location.est_code is absent for a court complex that has no establishment selection. Query settings and view-history navigation flags are not included in case records. Values in the examples below are illustrative only, not verified live results.

Case type, number, year, CNR, and the case/court identifiers in viewHistoryParams come from the search results when present. Location names are included when available from the selected court controls or location lookup. The Actor does not open case-history detail pages, so it does not collect hearings, orders, or other case-history details.

Illustrative party-case record

{
"srNo": 1,
"caseTypeNumberYear": "Civil Suit / 123 / 2025",
"petitioner": "Ramesh Kumar",
"respondent": "Suresh Sharma",
"advocate": "Adv. R. Sharma",
"caseType": "Civil Suit",
"caseNumber": "123",
"caseYear": "2025",
"cnrNumber": "DLSE010012342025",
"viewHistoryParams": {
"caseNo": "1",
"cino": "DLSE010012342025",
"selCourtCode": "1",
"stateCode": "26",
"distCode": "11",
"complexCode": "1260012"
},
"_location": {
"state_code": "26",
"state_name": "Delhi",
"district_code": "11",
"district_name": "South East",
"complex_code": "1260012@1,2,3,4@Y",
"complex_name": "Saket Courts",
"est_code": "1",
"est_name": "District Courts"
}
}

The alternate CNR-based parser layout can produce parties without the standard case-number and party columns:

{
"cnrNumber": "DLSE010012342026",
"parties": "Example Petitioner Vs Example Respondent",
"_location": {
"state_code": "26",
"district_code": "11",
"complex_code": "1260012@1,2,3,4@Y",
"complex_name": "Saket Courts",
"est_code": "1"
}
}

Location-mode record shapes

get_states:

{
"state_code": "26",
"state_name": "Delhi"
}

get_districts:

{
"state_code": "26",
"district_code": "11",
"district_name": "South East"
}

get_complexes:

{
"state_code": "26",
"district_code": "11",
"complex_code": "1260012",
"complex_code_full": "1260012@1,2,3,4@Y",
"complex_name": "Saket Courts"
}

get_establishments:

{
"state_code": "26",
"district_code": "11",
"complex_code": "1260012@1,2,3,4@Y",
"est_code": "1",
"est_name": "District Courts"
}

Output fields

Every field is optional in the shared dataset schema because case rows and location rows have different shapes. The Actor accepts case rows only when they have a recognized case number or CNR. Location rows need the identifiers and names required for their mode.

FieldTypeRequired?Meaning
srNoIntegerOptionalSerial number shown in a standard case-table result; omitted when the source does not supply one.
caseTypeNumberYearTextOptionalCase type, number, and year as shown in the result.
petitionerTextOptionalPetitioner name or text.
respondentTextOptionalRespondent name or text.
advocateTextOptionalAdvocate text when shown.
caseTypeTextOptionalParsed case type when the displayed number can be read.
caseNumberTextOptionalParsed case number.
caseYearTextOptionalParsed four-digit case year.
cnrNumberTextOptionalCNR identifier when exposed by the result.
viewHistoryParamsObjectOptionalCase and court identifiers from the public view-history link. Nested fields: caseNo, cino, selCourtCode, stateCode, distCode, complexCode. These identifiers do not mean that case history was retrieved.
partiesTextOptionalComplete party text in the alternate CNR-based result layout.
_locationObjectOptionalLocation where the case was first found. Nested fields: state_code, state_name, district_code, district_name, complex_code, complex_name, est_code, est_name.
state_codeTextOptionalState code in a location-mode row.
state_nameTextOptionalState name in a location-mode row.
district_codeTextOptionalDistrict code in a location-mode row.
district_nameTextOptionalDistrict name in a location-mode row.
complex_codeTextOptionalParsed complex code in get_complexes; full complex value in get_establishments.
complex_code_fullTextOptionalFull complex value, including its eCourts suffix, in get_complexes.
complex_nameTextOptionalCourt-complex name.
est_codeTextOptionalEstablishment code.
est_nameTextOptionalEstablishment name.

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Run status

  • SUCCEEDED means at least one validated case or location record was saved.
  • SUCCEEDED with limited results means records were saved, then a later collection or storage step failed. The summary sets isPartial to true.
  • FAILED means no real business records were saved, including an empty search or a run that produced only invalid rows.

The summary count includes only dataset writes that completed. Reaching the end of the selected search scope is normal completion.

Output summary

The Output summary link opens OUTPUT_SUMMARY in the run's default Key-value store. It is separate from the dataset and always contains exactly these three fields:

FieldTypeRequired?Meaning
statusTextRequiredSUCCEEDED if one or more real records were saved; otherwise FAILED.
itemsStoredIntegerRequiredNonnegative count of successful dataset writes for real records.
isPartialBooleanRequiredtrue when a later collection or storage failure followed saved records.

Example of a completed run:

{
"status": "SUCCEEDED",
"itemsStored": 25,
"isPartial": false
}

Tips and access limits

  • Start with a state or district scope for a smaller search. Omitting location fields can expand a search across many courts.
  • Use get_complexes to obtain the full complex value; a complex ending in @Y can have multiple establishments.
  • eCourts availability, CAPTCHA checks, and access limits can affect a run. Search mode requires the configured CAPTCHA solver secret.
  • Follow applicable laws, source terms, rate limits, and data-protection requirements when using or sharing public case information.
  • For support, use the Actor's Issues tab. Do not include solver keys or proxy credentials in a report.

Cost

Cost depends on browser run time, proxy traffic, CAPTCHA solver use, and the number of court locations searched. The default proxy configuration uses Apify Proxy, which may incur platform charges. Review current Apify and solver pricing in their respective accounts; this README does not set a fixed price.

W3Crawler CAPTCHA configuration

Search uses https://api.w3crawler.com/api/captcha/solve with model bc3f0628-29ba-4555-9c27-ff26b4fdc179 (ECourts India Captcha). The dedicated key owned by admin@w3crawler.com is provided through the encrypted CAPTCHA_API_KEY Actor environment variable. It is not an input field and is never stored in source, logs, or dataset output. PNG, JPEG and WebP uploads retain their actual image format.

The key has no expiry or lifetime usage quota; the account has unlimited wallet credits. General CAPTCHA service request throttling still applies. Credentials or billing failures stop the search; explicit invalid predictions can obtain a fresh image within the configured attempt limit. Keep the key private and do not include it in scheduled-task input.

Dataset charge limit

Apify may stop storing new dataset rows when the run's maximum total charge is reached. The Actor counts only stored rows, stops further dataset writes, and reports isPartial: true when that happens. A source result count is not a saved-record count. Check OUTPUT_SUMMARY and the dataset for the final stored count.