Download OpenAPI specification:Download
Documentation for CPA APIs available for use by the public.
Returns a signed URL that can be used to download the requested file. A successful response returns a 307 redirect, which will automatically begin the file download if your application follows redirects.
Example usage:
curl -X GET "https://api.comptroller.texas.gov/sift/v1/sift/public/get-link?file-path=sift%2Fgisss%2FAbilene_MSA-2021Q2.zip" \
-H "x-api-key: API_KEY"
| file-path required | string Example: file-path=sift%2Fgisss%2FAbilene_MSA-2021Q2.zip URL-encoded path of file to retrieve. |
| x-api-key required | string API key for authentication. To obtain an API key, register here. |
{- "statusCode": 307,
- "headers": {
}
}Return list of files available for download. The filter-by-quarter query parameter is optional. If excluded, will return all available files.
Example usage:
curl -X GET "https://api.comptroller.texas.gov/sift/v1/sift/public/list-files?filter-by-quarter=2021Q2" \
-H "x-api-key: API_KEY"
| filter-by-quarter | string Example: filter-by-quarter=2021Q2 Filter for files from a specific quarter, like 2021Q2. |
| x-api-key required | string API key for authentication. To obtain an API key, register here. |
{- "success": true,
- "data": [
- {
- "filePath": "sift/example/path-to-file.zip",
- "fileSize": 404855,
}
]
}Retrieve a single row from an Open Data table by table name and article id. Requires both table_id and id as path parameters.
Example usage:
curl -X GET "https://api.prod.ca.cpa.state.tx.us/open-data/v1/tables/exemption/A12345"
| table_id required | string Table name. |
| id required | string Article id. |
{- "id": 1,
- "title": "Study",
- "done": false,
- "updated_at": "2016-02-10T15:46:51.778Z",
- "created_at": "2016-02-10T15:46:51.778Z"
}Returns a single sales tax payer (STP) by taxpayer ID.
Example usage:
curl -X GET "https://api.comptroller.texas.gov/public-data/v1/public/sales-tax-payer/12345678901" \
-H "x-api-key: API_KEY"
| id required | string^\d{11}$ The 11 digit taxpayer ID. Must be 11 digits. |
| x-api-key required | string API key for authentication. To obtain an API key, register here. |
{- "success": true,
- "data": {
- "TAXPAYER_ID": "12345678901",
- "FEI_NUMBER": "123456789",
- "BUSINESS_NAME": "LIMITED EXPRESSIONS, INCORPORATED",
- "STREET": "123 Main St",
- "CITY": "Austin",
- "STATE": "TX",
- "ZIPCODE": "78701",
- "PLUS_FOUR_ZIPCODE": "1234",
- "FOREIGN_COUNTRY": "",
- "FOREIGN_PROVINCE": "",
- "FOREIGN_POSTAL_CODE": "",
- "NAME_PREFIX": "Mr.",
- "FIRST_NAME": "John",
- "MIDDLE_NAME": "A",
- "LAST_NAME": "Doe",
- "NAME_SUFFIX": "Jr.",
- "STATUS": "Active"
}
}Returns a list of locations for a given sales tax payer (STP) by taxpayer ID with optional filtering.
Example usage:
curl -X GET "https://api.comptroller.texas.gov/public-data/v1/public/sales-tax-payer/12345678901/locations?page=1&pageSize=10&globalFilter=test" \
-H "x-api-key: API_KEY"
| id required | string^\d{11}$ The 11 digit taxpayer ID. Must be 11 digits. |
| STATUS | string Enum: "ACTIVE" "INACTIVE" The permit status. |
| globalFilter | string [ 1 .. 50 ] characters Optional filter string. 1-50 characters. |
| page | string^\d+$ Default: "1" Page number for pagination. Must be a positive integer. Defaults to 1. |
| pageSize | string^\d+$ Default: "10" Number of results per page. Must be a positive integer. Defaults to 10. |
| sortBy | string Default: "LOCATION_NUMBER" Enum: "TAXPAYER_ID" "LOCATION_NAME" "LOCATION_NUMBER" "STREET" "CITY" "STATE" "ZIPCODE" "PERMIT_START_DT" "PERMIT_END_DT" "STATUS" Field to sort by. Allowed values: TAXPAYER_ID, LOCATION_NAME, LOCATION_NUMBER, STREET, CITY, STATE, ZIPCODE, PERMIT_START_DT, PERMIT_END_DT, or STATUS. Defaults to LOCATION_NUMBER. |
| sortOrder | string Default: "ASC" Enum: "ASC" "DESC" Sort order, either ASC (ascending) or DESC (descending). Defaults to ASC. |
| x-api-key required | string API key for authentication. To obtain an API key, register here. |
{- "success": true,
- "data": [
- {
- "TAXPAYER_ID": "12345678888",
- "LOCATION_NAME": "ACME, INC",
- "LOCATION_NUMBER": "1001",
- "STREET": "123 Main St",
- "CITY": "Austin",
- "STATE": "TX",
- "ZIPCODE": "78701",
- "PERMIT_START_DT": "2020-01-01",
- "PERMIT_END_DT": "2025-01-01",
- "STATUS": "Active"
}
], - "count": 1
}Retrieve franchise account and officer details by taxpayer ID.
Example usage:
curl -X GET "https://api.comptroller.texas.gov/public-data/v1/public/franchise-tax/12345678901" \
-H "x-api-key: API_KEY"
| id required | string^\d{11}$ Taxpayer's unique 11-digit ID |
| x-api-key required | string API key for authentication. To obtain an API key, register here. |
{- "success": true,
- "data": {
- "taxpayerId": "12345678888",
- "feiNumber": "000012345",
- "name": "LIMITED EXPRESSIONS, INCORPORATED",
- "dbaName": "LIMITED EXPRESSIONS",
- "mailingAddressStreet": "123 MAIN ST",
- "mailingAddressCity": "AUSTIN",
- "mailingAddressState": "TX",
- "mailingAddressZip": "78701",
- "mailingAddressZip4": "1234",
- "rightToTransactTX": "Y",
- "stateOfFormation": "TX",
- "sosRegistrationStatus": "Active",
- "effectiveSosRegistrationDate": "2022-01-01",
- "sosFileNumber": "0123456789",
- "registeredAgentName": "JOHN DOE",
- "registeredOfficeAddressStreet": "456 AGENT ST",
- "registeredOfficeAddressCity": "AUSTIN",
- "registeredOfficeAddressState": "TX",
- "registeredOfficeAddressZip": "78702",
- "taxId": "123456789",
- "lastUpdated": "2025-12-09T00:00:00.000Z",
- "reportYear": "2025",
- "officerInfo": [
- {
- "AGNT_NM": "JANE DOE",
- "AGNT_TITL_TX": "PRESIDENT",
- "AGNT_ACTV_YR": "2025",
- "AD_STR_POB_TX": "789 OFFICER AVE",
- "CITY_NM": "AUSTIN",
- "ST_CD": "TX",
- "AD_ZP": "78703",
- "SOURCE": "SOS"
}
]
}
}Search for FTAS records by taxpayer-id, name, or file-number.
Example usage:
curl -X GET "https://api.comptroller.texas.gov/public-data/v1/public/franchise-tax-list?taxpayerId=123456789" \
-H "x-api-key: API_KEY"
| taxpayerId | string^\d{9}$|^\d{11}$ Taxpayer Number (9 or 11 digits) |
| name | string^[^<>]{2,50}$ Entity Name (2-50 chars, no < >) |
| fileNumber | string^\d{6,10}$ File Number (6-10 digits, left-padded to 10) |
| x-api-key required | string API key for authentication. To obtain an API key, register here. |
{- "success": true,
- "count": 1,
- "data": [
- {
- "taxpayerId": "123456789",
- "name": "John Doe",
- "fileNumber": "0000123456"
}
]
}Returns a list of sales tax payer locations matching the search criteria.
Example usage:
# Search locations by zipcode
curl -X GET "https://api.comptroller.texas.gov/public-data/v1/public/sales-tax-payer-location?ZIPCODE=78701" -H "x-api-key: API_KEY"
# Search locations by name
curl -X GET "https://api.comptroller.texas.gov/public-data/v1/public/sales-tax-payer-location?LOCATION_NAME=location" -H "x-api-key: API_KEY"
| ZIPCODE | string^\d{5}$ The 5-digit zip code. Required if LOCATION_NAME is not provided. |
| LOCATION_NAME | string [ 2 .. 50 ] characters The location name. Required if ZIPCODE is not provided. |
| page | integer >= 1 Default: 1 Page number (default 1). |
| pageSize | integer [ 1 .. 100 ] Default: 10 Number of results per page (default 10). |
| sortBy | string Default: "LOCATION_NAME" Enum: "TAXPAYER_ID" "LOCATION_NAME" "LOCATION_NUMBER" "STREET" "CITY" "STATE" "ZIPCODE" "PERMIT_START_DT" "PERMIT_END_DT" "STATUS" Field to sort by. Allowed values: TAXPAYER_ID, LOCATION_NAME, LOCATION_NUMBER, STREET, CITY, STATE, ZIPCODE, PERMIT_START_DT, PERMIT_END_DT, or STATUS. Defaults to LOCATION_NAME. |
| sortOrder | string Default: "ASC" Enum: "ASC" "DESC" Sort order, either ASC (ascending) or DESC (descending). Defaults to ASC. |
| x-api-key required | string API key for authentication. To obtain an API key, register here. |
{- "success": true,
- "data": [
- {
- "TAXPAYER_ID": "12345678888",
- "LOCATION_NAME": "ACME, INC",
- "LOCATION_NUMBER": "1001",
- "STREET": "123 Main St",
- "CITY": "Austin",
- "STATE": "TX",
- "ZIPCODE": "78701",
- "PERMIT_START_DT": "2020-01-01",
- "PERMIT_END_DT": "2025-01-01",
- "STATUS": "Active"
}
], - "count": 1
}Returns a list of sales tax payers matching the search criteria.
Example usage:
# Search by taxpayer ID
curl -X GET "https://api.comptroller.texas.gov/public-data/v1/public/sales-tax-payer?searchType=taxpayerId&TAXPAYER_ID=12345678901" -H "x-api-key: API_KEY"
# Search by fei number
curl -X GET "https://api.comptroller.texas.gov/public-data/v1/public/sales-tax-payer?searchType=fein&FEI_NUMBER=123456789" -H "x-api-key: API_KEY"
# Search by individual name
curl -X GET "https://api.comptroller.texas.gov/public-data/v1/public/sales-tax-payer?searchType=name&FIRST_NAME=john&LAST_NAME=smith" -H "x-api-key: API_KEY"
# Search by business/legal entity name
curl -X GET "https://api.comptroller.texas.gov/public-data/v1/public/sales-tax-payer?searchType=legalName&BUSINESS_NAME=example" -H "x-api-key: API_KEY"
| searchType required | string Enum: "taxpayerId" "fein" "name" "legalName" The type of search to perform. |
| TAXPAYER_ID | string^\d{11}$ The 11-digit taxpayer ID. Required if searchType is 'taxpayerId'. |
| FEI_NUMBER | string^\d{9}$ The 9-digit FEI number. Required if searchType is 'fein'. |
| FIRST_NAME | string [ 1 .. 50 ] characters The first name. Required if searchType is 'name'. |
| MIDDLE_NAME | string [ 1 .. 50 ] characters The middle name. Optional if searchType is 'name'. |
| LAST_NAME | string [ 2 .. 50 ] characters The last name. Required if searchType is 'name'. |
| BUSINESS_NAME | string [ 2 .. 50 ] characters The legal name. Required if searchType is 'legalName'. |
| STATUS | string Enum: "ACTIVE" "INACTIVE" The permit status. |
| page | integer >= 1 Default: 1 Page number (default 1). |
| pageSize | integer [ 1 .. 100 ] Default: 10 Number of results per page (default 10). |
| sortBy | string Default: "TAXPAYER_ID" Enum: "TAXPAYER_ID" "FEI_NUMBER" "BUSINESS_NAME" "INDIVIDUAL_NAME" "LAST_NAME" "STREET" "CITY" "STATE" "ZIPCODE" "STATUS" Field to sort by. Allowed values: TAXPAYER_ID, FEI_NUMBER, BUSINESS_NAME, INDIVIDUAL_NAME, LAST_NAME, STREET, CITY, STATE, ZIPCODE, or STATUS. Defaults to TAXPAYER_ID. |
| sortOrder | string Default: "ASC" Enum: "ASC" "DESC" Sort order, either ASC (ascending) or DESC (descending). Defaults to ASC. |
| x-api-key required | string API key for authentication. To obtain an API key, register here. |
{- "success": true,
- "data": [
- {
- "TAXPAYER_ID": "12345678901",
- "FEI_NUMBER": "123456789",
- "BUSINESS_NAME": "LIMITED EXPRESSIONS, INCORPORATED",
- "STREET": "123 Main St",
- "CITY": "Austin",
- "STATE": "TX",
- "ZIPCODE": "78701",
- "PLUS_FOUR_ZIPCODE": "1234",
- "FOREIGN_COUNTRY": "",
- "FOREIGN_PROVINCE": "",
- "FOREIGN_POSTAL_CODE": "",
- "INDIVIDUAL_NAME": "John A Doe",
- "NAME_PREFIX": "Mr.",
- "FIRST_NAME": "John",
- "MIDDLE_NAME": "A",
- "LAST_NAME": "Doe",
- "NAME_SUFFIX": "Jr.",
- "STATUS": "Active"
}
], - "count": 1
}