A Go SDK for the CUFinder API that provides access to all company and person enrichment services.
go get github.com/cufinder/cufinder-gopackage 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,
})
}This SDK covers all 20 Cufinder API (v2) endpoints:
- CUF - Company Name to Domain
- LCUF - LinkedIn Company URL Finder
- DTC - Domain to Company Name
- DTE - Company Email Finder
- NTP - Company Phone Finder
- REL - Reverse Email Lookup
- FCL - Company Lookalikes Finder
- ELF - Company Fundraising
- CAR - Company Revenue Finder
- FCC - Company Subsidiaries Finder
- FTS - Company Tech Stack Finder
- EPP - LinkedIn Profile Enrichment
- FWE - LinkedIn Profile Email Finder
- TEP - Person Enrichment
- ENC - Company Enrichment
- CEC - Company Employee Count
- CLO - Company Locations
- CSE - Company Search
- PSE - Person Search
- LBS - Local Business Search (Google Maps Search API)
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)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
}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"`
}For support, please open an issue on the GitHub repository.