Skip to content

CUFinder/cufinder-go

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CUFinder Go SDK

License: MIT Go Reference

A Go SDK for the CUFinder API that provides access to all company and person enrichment services.

Table of Contents

Installation

go get github.com/cufinder/cufinder-go

Usage

package main

import (
    "fmt"
    "log"
    
    "github.com/cufinder/cufinder-go"
)

func main() {
    // Initialize the client
    sdk := cufinder.NewSDK("your-api-key-here")
    
    // Initialize with more options
    sdk := cufinder.NewSDKWithConfig(cufinder.ClientConfig{
        APIKey:     "your-api-key-here",
        BaseURL:    "https://api.cufinder.io/v2",
        Timeout:    60 * time.Second,
        MaxRetries: 3,
    })
}

API Reference

This SDK covers all 20 Cufinder API (v2) endpoints:

CUF - Company Name to Domain API

Returns the official website URL of a company based on its name.

result, err := sdk.CUF("cufinder", "US")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

LCUF - Company LinkedIn URL Finder API

Finds the official LinkedIn company profile URL from a company name.

result, err := sdk.LCUF("cufinder")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

DTC - Domain to Company Name API

Retrieves the registered company name associated with a given website domain.

result, err := sdk.DTC("cufinder.io")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

DTE - Company Email Finder API

Returns up to five general or role-based business email addresses for a company.

result, err := sdk.DTE("cufinder.io")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

NTP - Company Phone Finder API

Returns up to two verified phone numbers for a company.

result, err := sdk.NTP("apple")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

REL - Reverse Email Lookup API

Enriches an email address with detailed person and company information.

result, err := sdk.REL("iain.mckenzie@stripe.com")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

FCL - Company Lookalikes Finder API

Provides a list of similar companies based on an input company's profile.

result, err := sdk.FCL("apple")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

ELF - Company Fundraising API

Returns detailed funding information about a company.

result, err := sdk.ELF("cufinder")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

CAR - Company Revenue Finder API

Estimates a company's annual revenue based on name.

result, err := sdk.CAR("apple")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

FCC - Company Subsidiaries Finder API

Identifies known subsidiaries of a parent company.

result, err := sdk.FCC("amazon")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

FTS - Company Tech Stack Finder API

Detects the technologies a company uses.

result, err := sdk.FTS("cufinder")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

EPP - LinkedIn Profile Enrichment API

Takes a LinkedIn profile URL and returns enriched person and company data.

result, err := sdk.EPP("linkedin.com/in/iain-mckenzie")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

FWE - LinkedIn Profile Email Finder API

Extracts a verified business email address from a LinkedIn profile URL.

result, err := sdk.FWE("linkedin.com/in/iain-mckenzie")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

TEP - Person Enrichment API

Returns enriched person data based on full name and company name.

result, err := sdk.TEP("iain mckenzie", "stripe")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

ENC - Company Enrichment API

Provides a complete company profile from a company name.

result, err := sdk.ENC("cufinder")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

CEC - Company Employee Count API

Returns an estimated number of employees for a company.

result, err := sdk.CEC("cufinder")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

CLO - Company Locations API

Returns the known physical office locations of a company.

result, err := sdk.CLO("apple")
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

CSE - Company Search API

Search for companies by keyword, partial name, industry, location, or other filters.

result, err := sdk.CSE(cufinder.CseParams{
    Name:    "cufinder",
    Country: "germany",
    State:   "hamburg",
    City:    "hamburg",
})
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

PSE - Person Search API

Search for people by name, company, job title, location, or other filters.

result, err := sdk.PSE(cufinder.PseParams{
    FullName:    "iain mckenzie",
    CompanyName: "stripe",
})
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

LBS - Local Business Search API (Google Maps Search API)

Search for local businesses by location, industry, or name.

result, err := sdk.LBS(cufinder.LbsParams{
    Country: "united states",
    State:   "california",
    Page:    1,
})
if err != nil {
    log.Fatal(err)
}
fmt.Println(result)

Error Handling

The SDK returns errors for various scenarios:

result, err := sdk.CUF("cufinder", "US")
if err != nil {
    // Handle different types of errors
    switch {
    case strings.Contains(err.Error(), "401"):
        // Authentication error - Invalid API key
        log.Printf("Authentication failed: %v", err)
    case strings.Contains(err.Error(), "400"):
        // Credit limit error - Not enough credit
        log.Printf("Not enough credit: %v", err)
    case strings.Contains(err.Error(), "404"):
        // Not found error
        log.Printf("Not found result: %v", err)
    case strings.Contains(err.Error(), "422"):
        // Payload error
        log.Printf("Payload error: %v", err)
    case strings.Contains(err.Error(), "429"):
        // Rate limit exceeded
        log.Printf("Rate limit exceeded: %v", err)
    case strings.Contains(err.Error(), "500"):
        // Server error
        log.Printf("Server error: %v", err)
    default:
        log.Printf("Unknown error: %v", err)
    }
    return
}

Types

The SDK exports comprehensive Go types for all API requests and responses:

// Request parameter types
type CseParams struct {
    Name            string
    Domain          string
    Country         string
    State           string
    City            string
    Industry        string
    CompanySize     string
    Revenue         string
    EmployeeCount   string
    Page            int
}

type PseParams struct {
    FullName        string
    FirstName       string
    LastName        string
    CompanyName     string
    CompanyDomain   string
    JobTitle        string
    Country         string
    State           string
    City            string
    Page            int
}

type LbsParams struct {
    Name            string
    Country         string
    State           string
    City            string
    Industry        string
    Page            int
}

// Response types
type BaseResponse struct {
    Query       string `json:"query"`
    CreditCount int    `json:"credit_count"`
}

// Model types
type Company struct {
    // The Company struct contains all returned company data.
    Name            string   `json:"name"`
    Domain          string   `json:"domain"`
    Website         string   `json:"website"`
    LinkedinURL     string   `json:"linkedin_url"`
    Country         string   `json:"country"`
    State           string   `json:"state"`
    City            string   `json:"city"`
    Address         string   `json:"address"`
    Industry        string   `json:"industry"`
    CompanySize     string   `json:"company_size"`
    Revenue         string   `json:"revenue"`
    EmployeeCount   int      `json:"employee_count"`
    Subsidiaries    []string `json:"subsidiaries"`
    TechStack       []string `json:"tech_stack"`
    Emails          []string `json:"emails"`
    Phones          []string `json:"phones"`
    Description     string   `json:"description"`
    Locations       []CompanyLocation `json:"locations"`
    FoundedYear     int      `json:"founded_year"`
    LogoURL         string   `json:"logo_url"`
}

type Person struct {
    // The Person struct contains all returned person data.
    FullName        string   `json:"full_name"`
    FirstName       string   `json:"first_name"`
    LastName        string   `json:"last_name"`
    CompanyName     string   `json:"company_name"`
    CompanyDomain   string   `json:"company_domain"`
    JobTitle        string   `json:"job_title"`
    Country         string   `json:"country"`
    State           string   `json:"state"`
    City            string   `json:"city"`
    Email           string   `json:"email"`
    Phone           string   `json:"phone"`
    Description     string   `json:"description"`
    LinkedInURL     string   `json:"linkedin_url"`
}

type LookalikeCompany struct {
    // The LookalikeCompany struct contains all returned lookalike company data.
    Name            string   `json:"name"`
    Domain          string   `json:"domain"`
    Website         string   `json:"website"`
    LinkedinURL     string   `json:"linkedin_url"`
    Country         string   `json:"country"`
    State           string   `json:"state"`
    City            string   `json:"city"`
    Address         string   `json:"address"`
    Industry        string   `json:"industry"`
    CompanySize     string   `json:"company_size"`
    Revenue         string   `json:"revenue"`
    EmployeeCount   int      `json:"employee_count"`
    Subsidiaries    []string `json:"subsidiaries"`
    TechStack       []string `json:"tech_stack"`
    Emails          []string `json:"emails"`
    Phones          []string `json:"phones"`
    Description     string   `json:"description"`
    Locations       []CompanyLocation `json:"locations"`
    FoundedYear     int      `json:"founded_year"`
    LogoURL         string   `json:"logo_url"`
}

type FundraisingInfo struct {
    // Fundraising fields
    FundingLastRoundType         string `json:"funding_last_round_type"`
    FundingAmmountCurrencyCode   string `json:"funding_ammount_currency_code"`
    FundingMoneyRaised           string `json:"funding_money_raised"`
    FundingLastRoundInvestorsUrl string `json:"funding_last_round_investors_url"`
}

type CompanyLocation struct {
    // The CompanyLocation struct contains all returned company location data.
    Country    string `json:"country"`
    State      string `json:"state"`
    City       string `json:"city"`
    PostalCode string `json:"postal_code"`
    Line1      string `json:"line1"`
    Line2      string `json:"line2"`
    Latitude   string `json:"latitude"`
    Longitude  string `json:"longitude"`
}

Support

For support, please open an issue on the GitHub repository.