Discover/ConnectLI API
live

ConnectLI APIconnectli.com

Access business contact data for Nassau & Suffolk County via the ConnectLI API. Retrieve phone numbers, addresses, coordinates, and websites by category.

This API takes change requests — .
Endpoints
2
Updated
2d ago

What is the ConnectLI API?

The ConnectLI API provides structured access to Long Island business directory data across Nassau and Suffolk County through 2 endpoints. The list_businesses endpoint returns paginated business listings including name, phone, address, GPS coordinates, website, and description for any category. Use list_categories first to discover all available category IDs and their listing counts before querying businesses.

This call costs1 credit / call— charged only on success
Try it
Page number for pagination.
Business category to list. Accepted named values: architects, insurance, law_firms, it_companies. Also accepts any numeric category ID returned by list_categories.
Number of results per page.
api.parse.bot/scraper/d9b117f0-b797-47a5-be3b-7bd2f0fe8dd4/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X POST 'https://api.parse.bot/scraper/d9b117f0-b797-47a5-be3b-7bd2f0fe8dd4/list_businesses' \
  -H 'X-API-Key: $PARSE_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
  "category": "94"
}'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace connectli-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""
ConnectLI Business Directory API Client

Access contact information for businesses listed on ConnectLI.com,
a Long Island business directory covering Nassau & Suffolk County.

Get your API key from: https://parse.bot/settings
"""

import os
import requests
from typing import Optional, Dict, Any, List


class ParseClient:
    """Client for interacting with the ConnectLI Business Directory API."""

    def __init__(self, api_key: Optional[str] = None):
        """
        Initialize the Parse API client.

        Args:
            api_key: API key for authentication. If not provided,
                    reads from PARSE_API_KEY environment variable.
        """
        self.base_url = "https://api.parse.bot"
        self.scraper_id = "d9b117f0-b797-47a5-be3b-7bd2f0fe8dd4"
        self.api_key = api_key or os.getenv("PARSE_API_KEY")

        if not self.api_key:
            raise ValueError(
                "API key not provided. Set PARSE_API_KEY environment variable "
                "or pass api_key parameter."
            )

    def _call(
        self, endpoint: str, method: str = "POST", **params
    ) -> Dict[str, Any]:
        """
        Make a request to the Parse API.

        Args:
            endpoint: API endpoint name
            method: HTTP method (GET or POST)
            **params: Query/body parameters

        Returns:
            Parsed JSON response

        Raises:
            requests.exceptions.RequestException: If the request fails
        """
        url = f"{self.base_url}/scraper/{self.scraper_id}/{endpoint}"
        headers = {
            "X-API-Key": self.api_key,
            "Content-Type": "application/json",
        }

        if method.upper() == "GET":
            response = requests.get(url, headers=headers, params=params)
        elif method.upper() == "POST":
            response = requests.post(url, headers=headers, json=params)
        else:
            raise ValueError(f"Unsupported HTTP method: {method}")

        response.raise_for_status()
        return response.json()

    def list_businesses(
        self,
        category: str,
        page: int = 1,
        per_page: int = 50,
    ) -> Dict[str, Any]:
        """
        List all businesses in a specified category with contact information.

        Args:
            category: Business category. Accepted values: architects, insurance,
                     law_firms, it_companies
            page: Page number for pagination (default: 1)
            per_page: Number of results per page (default: 50)

        Returns:
            Dictionary containing category, total_found, page, per_page,
            max_pages, and listings array with business objects
        """
        return self._call(
            "list_businesses",
            method="POST",
            category=category,
            page=page,
            per_page=per_page,
        )


def main():
    """
    Practical workflow: Search for businesses in multiple categories
    and display contact information for easy outreach.
    """
    # Initialize client
    client = ParseClient()

    # Categories we want to search
    categories = ["architects", "it_companies"]

    all_businesses = []

    print("=" * 70)
    print("ConnectLI Business Directory Search")
    print("=" * 70)

    # Iterate through categories
    for category in categories:
        print(f"\n📂 Searching category: {category.replace('_', ' ').title()}")
        print("-" * 70)

        try:
            # Get first page of results for this category
            response = client.list_businesses(
                category=category,
                page=1,
                per_page=50,
            )

            total_found = response.get("total_found", 0)
            max_pages = response.get("max_pages", 1)
            listings = response.get("listings", [])

            print(f"Found {total_found} businesses across {max_pages} page(s)")

            # Process listings from this page
            for idx, business in enumerate(listings, 1):
                business_info = {
                    "category": category,
                    "id": business.get("id"),
                    "name": business.get("name"),
                    "phone": business.get("phone"),
                    "address": business.get("address"),
                    "website": business.get("website"),
                    "description": business.get("description", "N/A")[:80] + "...",
                }
                all_businesses.append(business_info)

                # Display first 3 businesses per category as preview
                if idx <= 3:
                    print(f"\n  Business #{idx}: {business.get('name')}")
                    print(f"    📞 Phone: {business.get('phone')}")
                    print(f"    📍 Address: {business.get('address')}")
                    print(f"    🌐 Website: {business.get('website', 'N/A')}")

            if len(listings) > 3:
                print(f"\n  ... and {len(listings) - 3} more businesses")

            # If there are multiple pages, fetch additional pages
            if max_pages > 1:
                print(f"\n  📄 Pagination available: {max_pages} total pages")

        except requests.exceptions.RequestException as e:
            print(f"  ❌ Error fetching {category}: {e}")

    # Summary statistics
    print("\n" + "=" * 70)
    print("SUMMARY")
    print("=" * 70)
    print(f"Total businesses found: {len(all_businesses)}")

    if all_businesses:
        print("\n📋 Contact Summary:")
        print("-" * 70)

        # Group by category
        by_category = {}
        for biz in all_businesses:
            cat = biz["category"]
            if cat not in by_category:
                by_category[cat] = []
            by_category[cat].append(biz)

        for category, businesses in sorted(by_category.items()):
            print(f"\n{category.replace('_', ' ').title()} ({len(businesses)})")
            for biz in businesses[:2]:  # Show first 2 per category
                print(f"  • {biz['name']:40} | {biz['phone']}")


if __name__ == "__main__":
    main()
All endpoints · 2 totalmissing one? ·

List all businesses in a specified category with their contact information including name, phone, address, website, and description. Returns paginated results. The category parameter accepts named aliases (architects, insurance, law_firms, it_companies) or any numeric category ID from list_categories.

Input
ParamTypeDescription
pageintegerPage number for pagination.
categoryrequiredstringBusiness category to list. Accepted named values: architects, insurance, law_firms, it_companies. Also accepts any numeric category ID returned by list_categories.
per_pageintegerNumber of results per page.
Response
{
  "type": "object",
  "fields": {
    "page": "integer current page number",
    "category": "string category identifier used",
    "listings": "array of business objects with id, name, description, phone, address, latitude, longitude, website, permalink",
    "per_page": "integer results per page",
    "max_pages": "integer total number of pages",
    "total_found": "integer total number of listings found"
  },
  "sample": {
    "data": {
      "page": 1,
      "category": "architects",
      "listings": [
        {
          "id": 6698,
          "name": "Cancos Tile and Stone",
          "phone": "+1 (555) 012-3456",
          "address": "1085 Portion Road Farmingville, NY 11738",
          "website": "https://cancostileandstone.com/",
          "latitude": null,
          "longitude": null,
          "permalink": "https://connectli.com/business/1085-portion-road-farmingville-ny-11738-cancos-tile-and-stone/",
          "description": "Cancos Tile & Stone has delivered innovative tiles..."
        }
      ],
      "per_page": 50,
      "max_pages": 1,
      "total_found": 10
    },
    "status": "success"
  }
}

About the ConnectLI API

Endpoints and Data Returned

The API exposes two endpoints. list_categories takes no inputs and returns an array of category objects, each with an id, name, slug, and listing_count. The total_categories field tells you how many categories exist in total. Use the returned id values directly as the category parameter in list_businesses, or use one of the named aliases: architects, insurance, law_firms, or it_companies.

Browsing Business Listings

list_businesses accepts a required category parameter, plus optional page and per_page integers for pagination. Each item in the listings array includes the business id, name, description, phone, address, latitude, longitude, website, and permalink. The response also returns max_pages and total_found so you can determine the full result set size before iterating through pages.

Coverage and Scope

Data covers businesses listed on ConnectLI.com, a directory focused on Nassau County and Suffolk County on Long Island, New York. Category coverage varies — listing_count in the list_categories response tells you exactly how many businesses exist per category before you request them. Geographic coordinates (latitude, longitude) are included per listing, making it straightforward to map results or compute proximity.

Reliability & maintenance

The ConnectLI API is a managed, monitored endpoint for connectli.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when connectli.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official connectli.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a map of Long Island businesses in a specific category using the latitude and longitude fields.
  • Compile a contact list of local architects or law firms using phone and address fields from list_businesses.
  • Aggregate website URLs for businesses in a given category for outreach or SEO analysis.
  • Enumerate all available business categories and their listing counts using list_categories.
  • Paginate through all IT companies in Nassau & Suffolk County using the page and max_pages fields.
  • Cross-reference business permalinks against your own database to detect new or removed listings.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does ConnectLI have an official developer API?+
ConnectLI does not publish an official developer API or documented public endpoints for accessing its directory data.
What does list_businesses actually return for each listing?+
Each business object in the listings array includes: id, name, description, phone, address, latitude, longitude, website, and permalink. The response envelope also includes the current page, per_page, max_pages, and total_found so you can paginate through the full result set.
Is the data limited to specific categories, or can I retrieve all businesses at once?+
list_businesses requires a category parameter — you must specify a named alias (architects, insurance, law_firms, it_companies) or a numeric category ID from list_categories. There is no single call that returns all businesses across all categories. You can fork this API on Parse and revise it to add a bulk or cross-category endpoint if that fits your use case.
Does the API return business hours or user reviews?+
Not currently. The API returns contact fields — name, phone, address, website, description, and coordinates. Business hours and user reviews are not included in the current response shape. You can fork the API on Parse and revise it to add those fields if ConnectLI exposes them for a given listing.
How do I find a valid numeric category ID to pass to list_businesses?+
Call list_categories first. It returns every category's id, name, slug, and listing_count. Pass any returned id as the category value in list_businesses. Alternatively, the four named aliases — architects, insurance, law_firms, it_companies — are accepted without looking up an ID.
Page content last updated . Spec covers 2 endpoints from connectli.com.
Related APIs in B2b DirectorySee all →
crunchbase.com API
Search and retrieve detailed information about companies, investors, and key people to discover funding opportunities, track market competitors, and analyze investment trends. Access comprehensive profiles including organization details, investor backgrounds, and complete funding round histories all in one place.
dnb.com API
Search millions of companies in Dun & Bradstreet's global business directory to find detailed company profiles and verify D-U-N-S numbers. Look up key business information like company details and identifiers to support due diligence, sales prospecting, and business intelligence needs.
opencorporates.com API
Access comprehensive company registration data, officer details, and filing histories from OpenCorporates across jurisdictions worldwide to research businesses and their leadership. Search for specific companies or officers, retrieve detailed corporate information, and explore filing records to support due diligence, compliance checks, and business intelligence.
ycombinator.com API
Access comprehensive data from the Y Combinator ecosystem, including company profiles, founder and partner information, job listings, and the YC library. Filter companies by batch, industry, and hiring status, and explore detailed profiles with social links, team information, and funding metadata.
ulprospector.com API
Search and browse chemicals and materials from the UL Prospector database across multiple industries, then retrieve detailed specifications and properties for any material you find. Discover industry-specific products and access comprehensive material information to support your sourcing and product development needs.
kvk.nl API
Search for Dutch businesses and retrieve detailed company information such as registration numbers, addresses, and business details directly from the official KVK trade register. Look up specific companies to access their official registration data and verify business information in the Netherlands.
pappers.fr API
Search French companies and directors to access detailed business profiles, ownership structures, trademark information, and legal filings all in one place. Build professional networks, track company leadership, and monitor business intelligence across France's official registry data.
thebluebook.com API
Search and retrieve company profiles from The Blue Book Building & Construction Network. Find commercial contractors by keyword, trade category (CSI code), and geographic region.