## Prefeitura / SP / São Paulo / CCM
Consulta informações do Cadastro de Contribuinte Mobiliário (CCM) da Secretaria da Fazenda do Município de São Paulo, onde são registrados os dados cadastrais de todos os contribuintes de tributos mobiliários do Município.


### Site URL
- https://ccm.prefeitura.sp.gov.br/login/contribuinte?tipo=F

### Request
POST endpoint: `https://api.infosimples.com/api/v2/consultas/pref/sp/sao-paulo/ccm`



| Parameter | Description                                                 |
| --------- | ----------------------------------------------------------- |
| token*    | The token that will authenticate and authorize the request. |
| cnpj**    | CNPJ of the company to be queried.                          |
| cpf**     | CPF of the individual to be queried.                        |

> * Required parameter.

> ** Optional parameter. Sometimes it is necessary to set at least one of the optional parameters for the service to work properly.


### Response examples (OK)
```json
{
  "code": 200,
  "code_message": "A requisição foi processada com sucesso.",
  "errors": [],
  "header": {
    "api_version": "v2",
    "service": "pref/sp/sao-paulo/ccm",
    "parameters": {
      "cnpj": "11111111111111"
    },
    "client_name": "Minha Empresa",
    "token_name": "Token de Produção",
    "billable": true,
    "price": "0.2",
    "requested_at": "2019-03-11T10:37:21.000-03:00",
    "elapsed_time_in_milliseconds": 3,
    "remote_ip": "111.111.111.111",
    "signature": "U2FsdGVkX18s4YlcaDKA8PasMfx/B6SxV6Dr0nlJMrjpORelsoy6b0ER1QOXoR0dWKrY1ndLro6Yuaan8yP8jA=="
  },
  "data_count": 1,
  "data": [
    {
      "atualizacao_data": "28/04/2015",
      "cancelada": false,
      "cancelamento_data": "11/11/2011",
      "ccm": "1.111.111-1",
      "ccm_centralizador": "Não consta",
      "cnaes": [
        {
          "codigo": "1111-1/11",
          "descricao": "Atividades de consultoria em gestão empresarial, exceto consultoria técnica específica",
          "tipo": "Principal",
          "data_inicio": "11/11/1111"
        },
        {
          "codigo": "1111-1/11",
          "descricao": "Serviços combinados de escritório e apoio administrativo",
          "tipo": "Secundário",
          "data_inicio": "11/11/1111"
        }
      ],
      "cnpj": "11.111.111/1111-11",
      "cpf": "",
      "endereco_bairro": "Jardins",
      "endereco_cep": "01311-300",
      "endereco_localizacao": "Avenida Paulista",
      "endereco_tipo": "Avenida Paulista",
      "inicio_data": "30/03/2011",
      "inscricao_data": "11/11/1111",
      "iptu_numero": "111.111.1111-1",
      "nome": "Nome de Exemplo",
      "normalizado_atualizacao_data": "28/04/2015",
      "normalizado_ccm": "11111111",
      "normalizado_cnpj": "11111111111111",
      "normalizado_cpf": "",
      "normalizado_endereco_cep": "01311-300",
      "normalizado_inicio_data": "30/03/2011",
      "normalizado_inscricao_data": "11/11/1111",
      "pessoa_juridica": "Simples",
      "telefone": "Não Consta",
      "tipo_unidade": "",
      "tributos": [
        {
          "codigo": "1111",
          "data_inicio": "13/02/2018",
          "tributo": "ISS",
          "aliquota": "2,9 %",
          "quantidade": ""
        },
        {
          "codigo": "11111",
          "data_inicio": "30/03/2011",
          "tributo": "TFE",
          "aliquota": "-",
          "quantidade": ""
        }
      ],
      "site_receipt": "https://api.infosimples.com/receipt/exemplo-de-url"
    }
  ],
  "site_receipts": [
    "https://api.infosimples.com/receipt/exemplo-de-url"
  ]
}
```


### Preview file

The preview file (`site_receipts`) in the response JSON is **generated by the source (website/app)** that processed the automation.

### Code snippets


#### Python
```python
# Tested with: Python 3.10.19, Python 3.14.0
import requests

url = 'https://api.infosimples.com/api/v2/consultas/pref/sp/sao-paulo/ccm'
args = {
  "cnpj":    "VALUE_OF_PARAMETER_CNPJ",
  "cpf":     "VALUE_OF_PARAMETER_CPF",
  "token":   "WRITE_YOUR_TOKEN_HERE",
  "timeout": "300"
}

response = requests.post(url, args)
response_json = response.json()
response.close()

if response_json['code'] == 200:
  print("Retorno com sucesso: ", response_json['data'])
elif response_json['code'] in range(600, 799):
  mensagem = "Resultado sem sucesso. Leia para saber mais: \n"
  mensagem += "Código: {} ({})\n".format(response_json['code'], response_json['code_message'])
  mensagem += "; ".join(response_json['errors'])
  print(mensagem)

print("Cabeçalho da consulta: ", response_json['header'])
print("URLs com arquivos de visualização (HTML/PDF): ", response_json['site_receipts'])
```


## We are here to help
Do you still need to figure something out? Reach us at [suporte@infosimples.com.br](mailto:suporte@infosimples.com.br) and our highly qualified support team will be happy to help.
