{"id":"aea050d0-25d2-44df-9843-f76e843d7966","slug":"registroimprese-it-api","name":"registroimprese.it API","description":"Provides two endpoints for the Italian Business Registry (Registro Imprese): (1) search for companies by name or keyword with optional province filtering, returning basic company info and a company ID; (2) retrieve full company details — registration data, address, legal status, corporate structure, and more — using the ID returned from search.","front_facing_description":"Search Italian companies by name or ID to instantly access official business registration details including company status, founding information, and corporate structure from the authoritative Italian Business Registry. Get comprehensive company profiles with verified legal and operational data all in one place.","source_url":"https://registroimprese.it","is_authenticated":false,"canonical_scraper_id":"084917d9-3f65-4303-bdbd-736a43473dea","apis":[{"method":"GET","endpoint_name":"search_companies","description":"Search for Italian companies by name and province. returns basic info and a company_id for details.","input_params":{"query":{"type":"string","required":true,"description":"Company name or keyword to search for."},"province":{"type":"string","required":false,"description":"Two-letter province code (e.g. VI for Vicenza) or empty for all."}},"return_schema":{"type":"object","fields":{"items":"array","total":"integer","p_auth":"string"},"sample":{"items":[{"name":"ARROWELD ITALIA S.P.A.","address":"VIA GIOVANNI PASCOLI 5","province":"VI","company_id":"nNcW12/el7tWYr0/wb7VQw==","instance_id":"o6uJEv91oybn","municipality":"ZANE'"}],"total":1,"p_auth":"IIWDr120"}},"initiates_session":false,"price":1},{"method":"GET","endpoint_name":"get_company_details","description":"Get full details for a specific company using its ID from search results.","input_params":{"p_auth":{"type":"string","required":true,"description":"The session auth token from search results."},"company_id":{"type":"string","required":true,"description":"The encrypted company ID from search results."},"instance_id":{"type":"string","required":true,"description":"The portlet instance ID from search results."}},"return_schema":{"type":"object","fields":{"pec":"string","name":"string","address":"string","legal_form":"string","rea_number":"string","vat_number":"string","fiscal_code":"string"},"sample":{"pec":"arrowelditaliaspa@legalmail.it","name":"ARROWELD ITALIA S.P.A.","address":"VIA GIOVANNI PASCOLI 5, 36010 ZANE' (VI)","legal_form":"SOCIETA' PER AZIONI","rea_number":"VI - 312214","vat_number":"03273310243","fiscal_code":"03273310243"}},"initiates_session":false,"price":1}],"sample_inputs":{},"prefill_inputs":{},"last_verified_at":null,"endpoint_health":[],"sdk_usage_example":{"code":"\"\"\"\nItalian Business Registry API (Registro Imprese) - Parse Client\nSearch and extract official company data from the Italian Business Registry.\nGet your API key from: https://parse.bot/settings\n\"\"\"\n\nimport os\nimport json\nimport requests\nfrom typing import Optional, Any, Dict, List\n\n\nclass ParseClient:\n    \"\"\"Client for the Italian Business Registry API via Parse.\"\"\"\n\n    def __init__(self, api_key: Optional[str] = None):\n        \"\"\"\n        Initialize the Parse API client.\n\n        Args:\n            api_key: API key for Parse. If not provided, reads from PARSE_API_KEY env var.\n        \"\"\"\n        self.base_url = \"https://api.parse.bot\"\n        self.scraper_id = \"084917d9-3f65-4303-bdbd-736a43473dea\"\n        self.api_key = api_key or os.getenv(\"PARSE_API_KEY\")\n\n        if not self.api_key:\n            raise ValueError(\"API key not provided. Set PARSE_API_KEY environment variable or pass api_key parameter.\")\n\n    def _call(self, endpoint: str, method: str = \"POST\", **params) -> Dict[str, Any]:\n        \"\"\"\n        Make a request to the Parse API.\n\n        Args:\n            endpoint: The API endpoint name\n            method: HTTP method (GET or POST)\n            **params: Parameters to send with the request\n\n        Returns:\n            Response JSON as a dictionary\n        \"\"\"\n        url = f\"{self.base_url}/scraper/{self.scraper_id}/{endpoint}\"\n        headers = {\n            \"X-API-Key\": self.api_key,\n            \"Content-Type\": \"application/json\"\n        }\n\n        if method == \"GET\":\n            response = requests.get(url, headers=headers, params=params)\n        elif method == \"POST\":\n            response = requests.post(url, headers=headers, json=params)\n        else:\n            raise ValueError(f\"Unsupported HTTP method: {method}\")\n\n        response.raise_for_status()\n        return response.json()\n\n    def search_companies(self, query: str, province: Optional[str] = None) -> Dict[str, Any]:\n        \"\"\"\n        Search for Italian companies by name and province.\n\n        Args:\n            query: Company name or keyword to search for\n            province: Two-letter province code (e.g., 'VI' for Vicenza), optional\n\n        Returns:\n            Dictionary with total count and items list containing company info\n        \"\"\"\n        params = {\"query\": query}\n        if province:\n            params[\"province\"] = province\n\n        return self._call(\"search_companies\", method=\"GET\", **params)\n\n    def get_company_details(self, p_auth: str, instance_id: str, company_id: str) -> Dict[str, Any]:\n        \"\"\"\n        Get full details for a specific company.\n\n        Args:\n            p_auth: Session auth token from search results\n            instance_id: Portlet instance ID from search results\n            company_id: Encrypted company ID from search results\n\n        Returns:\n            Dictionary with complete company details\n        \"\"\"\n        params = {\n            \"p_auth\": p_auth,\n            \"instance_id\": instance_id,\n            \"company_id\": company_id\n        }\n        return self._call(\"get_company_details\", method=\"GET\", **params)\n\n\ndef main():\n    \"\"\"Practical workflow example: search companies and get their details.\"\"\"\n\n    # Initialize the client\n    client = ParseClient()\n\n    print(\"=\" * 60)\n    print(\"Italian Business Registry API - Company Search\")\n    print(\"=\" * 60)\n\n    # Search for companies\n    search_query = \"ARROWELD\"\n    province_code = \"VI\"  # Vicenza\n\n    print(f\"\\nSearching for companies: '{search_query}' in province {province_code}...\")\n    search_results = client.search_companies(query=search_query, province=province_code)\n\n    print(f\"\\nFound {search_results['total']} company/companies:\")\n    print(\"-\" * 60)\n\n    # Get p_auth token for use in subsequent calls\n    p_auth = search_results.get('p_auth')\n\n    # Process each company found\n    for idx, company in enumerate(search_results.get('items', []), 1):\n        print(f\"\\nResult {idx}: {company['name']}\")\n        print(f\"  Location: {company['municipality']}, {company['province']}\")\n        print(f\"  Address: {company['address']}\")\n        print(f\"  Instance ID: {company['instance_id']}\")\n\n        # Get detailed information for this company\n        print(\"\\n  Fetching detailed information...\")\n        try:\n            details = client.get_company_details(\n                p_auth=p_auth,\n                instance_id=company['instance_id'],\n                company_id=company['company_id']\n            )\n\n            print(f\"  Full Details:\")\n            print(f\"    Legal Form: {details.get('legal_form', 'N/A')}\")\n            print(f\"    VAT Number: {details.get('vat_number', 'N/A')}\")\n            print(f\"    Fiscal Code: {details.get('fiscal_code', 'N/A')}\")\n            print(f\"    REA Number: {details.get('rea_number', 'N/A')}\")\n            print(f\"    Full Address: {details.get('address', 'N/A')}\")\n            print(f\"    PEC Email: {details.get('pec', 'N/A')}\")\n\n        except requests.exceptions.RequestException as e:\n            print(f\"  Error fetching details: {e}\")\n\n    print(\"\\n\" + \"=\" * 60)\n    print(\"Search completed successfully!\")\n    print(\"=\" * 60)\n\n\nif __name__ == \"__main__\":\n    main()","endpoints":["search_companies","get_company_details"],"has_session":false,"front_facing_description":"Search Italian companies by name or ID to instantly access official business registration details including company status, founding information, and corporate structure from the authoritative Italian Business Registry. Get comprehensive company profiles with verified legal and operational data all in one place."},"sdk_delivery_state":"legacy","summary":"Search and extract official company data from the Italian Business Registry (Registro Imprese).","updated_at":"2026-07-23T02:47:34.508854+00:00","user_variants":[],"latest_version":2,"user_status":null,"user_scraper_id":null,"contributes_to_marketplace":true,"pinned_version":null,"seo_content":{"faqs":[{"a":"Registro Imprese does not publish a free, self-service developer API. Official bulk or programmatic data access typically requires formal agreements through the Italian Chambers of Commerce (Infocamere). This Parse API provides structured endpoint access without that overhead.","q":"Does Registro Imprese have an official developer API?"},{"a":"`search_companies` returns a list of matched companies with identifiers needed for follow-up calls. `get_company_details` returns the full profile: `name`, `address`, `legal_form`, `rea_number`, `vat_number`, `fiscal_code`, and `pec`. The search step exists to obtain the `company_id`, `p_auth`, and `instance_id` parameters that `get_company_details` requires.","q":"What does get_company_details return beyond what search_companies shows?"},{"a":"The `search_companies` endpoint accepts a company name or keyword via the `query` parameter. Direct lookup by VAT number or fiscal code is not currently supported. You can fork this API on Parse and revise it to add a lookup-by-tax-identifier endpoint.","q":"Can I search by VAT number or fiscal code directly instead of by company name?"},{"a":"Not currently. The API covers registration identifiers, legal form, address, and PEC email. Corporate structure details such as directors, shareholders, and filed financial statements are not exposed. You can fork it on Parse and revise to add endpoints targeting those data categories.","q":"Does the API return company directors, shareholders, or financial statements?"},{"a":"The data reflects what is on file with Registro Imprese at the time of the request. Changes filed with the Chamber of Commerce — such as address updates or legal form changes — appear once they are processed and published by the registry. There is no historical or time-series data exposed; responses reflect the current registered state.","q":"How current is the data returned by the API?"}],"keywords":["Italian business registry API","Registro Imprese API","Italy company search API","Italian VAT number lookup","Italian fiscal code API","REA number lookup Italy","Italian company details API","PEC email Italian company","Italian Chamber of Commerce API","Italy legal entity data API","Italian company registration data","search Italian companies by province","Italy due diligence API","Italian SRL SPA company lookup"],"use_cases":["Verify a supplier's VAT number and fiscal code before onboarding them as a vendor","Look up the certified PEC email address to send legally valid communications to an Italian company","Build a CRM enrichment pipeline that appends REA numbers and registered addresses to Italian business contacts","Screen Italian counterparties by legal form before entering contracts","Filter company searches by province to generate regional business lists for territory-based sales teams","Automate due-diligence checks on Italian entities by retrieving their official registration details programmatically"],"meta_title":"Registro Imprese API – Italian Business Registry","generated_at":"2026-05-21T20:45:59.105585+00:00","lead_paragraph":"The Registro Imprese API provides structured access to Italy's official business registry through 2 endpoints. Use `search_companies` to find companies by name and filter by province, then pass the returned `company_id` to `get_company_details` to retrieve verified fields including VAT number, fiscal code, REA number, registered address, legal form, and certified email (PEC).","schema_version":2,"meta_description":"Search and retrieve official Italian company data from Registro Imprese. Access VAT numbers, legal form, REA numbers, addresses, and PEC email via 2 endpoints.","primary_category":"b2b_directory","long_description_md":"## What the API Returns\n\nThe API covers official registration data held by the Italian Business Registry (Registro Imprese), the authoritative public source for Italian company information. Responses include fields used in legal, compliance, and due-diligence contexts: `vat_number`, `fiscal_code`, `rea_number`, `legal_form`, `address`, `name`, and `pec` (the certified email address required for formal communications with Italian businesses).\n\n## Endpoints\n\n`search_companies` accepts a `query` string (company name or keyword) and an optional `province` parameter using the standard two-letter Italian province code (e.g. `MI` for Milan, `RM` for Rome). It returns an array of matching companies, a `total` count, and a `p_auth` session token needed for the next call. `get_company_details` takes three parameters sourced directly from search results — `company_id`, `p_auth`, and `instance_id` — and returns the full company profile.\n\n## Workflow and Parameters\n\nBecause `get_company_details` depends on `p_auth`, `company_id`, and `instance_id` from `search_companies`, the two endpoints are designed to be used in sequence. You cannot call `get_company_details` with a standalone company identifier; you must first run a search to obtain all three required parameters. The `province` filter in search is optional — omitting it searches across all Italian provinces.\n\n## Coverage\n\nData reflects what is publicly filed with the Italian Chamber of Commerce system. This includes legally registered entities such as limited liability companies (SRL), joint-stock companies (SPA), sole proprietorships, and other recognized Italian legal forms. The `legal_form` field in the detail response identifies the exact entity type.","generated_with_model":"global.anthropic.claude-sonnet-4-6","secondary_categories":["government_public","finance"]},"primary_category":"b2b_directory","secondary_categories":["government_public","finance"],"access_requirements":[]}