Skip to content

Commit 769e3e3

Browse files
Merge branch 'release/v1.1.0'
2 parents 92b99f5 + 5d015ca commit 769e3e3

39 files changed

Lines changed: 574 additions & 272 deletions

CHANGELOG.md

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,16 @@
11
# Cufinder Python SDK Changelog
22

3-
## 1.0.0
3+
## 1.1.0 (January 31, 2025)
4+
5+
#### Features
6+
- **New V2 API services**: Add new V2 services including `BCD`, `CCP`, `ISC`, `CBC`, `CSC`, `CSN`, `NAO` and `NAA`
7+
8+
9+
#### Documentation
10+
- **Updated README.md**: Add API reference for all new services
11+
12+
13+
## 1.0.0 (November 4, 2025)
414

515
#### Documentation
616
- Updated all service method examples with correct SDK usage patterns
@@ -15,7 +25,7 @@
1525

1626

1727

18-
## 0.1.0
28+
## 0.1.0 (October 9, 2025)
1929

2030
#### Features
2131
- Initial release of the Cufinder Python SDK
@@ -43,6 +53,6 @@
4353

4454

4555

46-
## 0.0.1
56+
## 0.0.1 (October 8, 2025)
4757

4858
Initial release of the Cufinder Python SDK with core functionality.

README.md

Lines changed: 81 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ client = Cufinder('your-api-key-here', timeout=60)
3535

3636
## API Reference
3737

38-
This SDK covers all 20 Cufinder API (v2) endpoints:
38+
This SDK covers all 28 Cufinder API (v2) endpoints:
3939

4040
- **CUF** - [Company Name to Domain](https://apidoc.cufinder.io/apis/company-name-to-domain)
4141
- **LCUF** - [LinkedIn Company URL Finder](https://apidoc.cufinder.io/apis/company-linkedin-url-finder)
@@ -57,6 +57,14 @@ This SDK covers all 20 Cufinder API (v2) endpoints:
5757
- **CSE** - [Company Search](https://apidoc.cufinder.io/apis/company-search)
5858
- **PSE** - [Person Search](https://apidoc.cufinder.io/apis/person-search)
5959
- **LBS** - [Local Business Search (Google Maps Search API)](https://apidoc.cufinder.io/apis/local-business-search-google-maps-search-api)
60+
- **BCD** - [B2B Customers Finder](https://apidoc.cufinder.io/apis/b2b-customers-finder)
61+
- **CCP** - [Company Career Page Finder](https://apidoc.cufinder.io/apis/company-career-page-finder)
62+
- **ISC** - [Company Saas Checker](https://apidoc.cufinder.io/apis/company-saas-checker)
63+
- **CBC** - [Company B2B or B2C Checker](https://apidoc.cufinder.io/apis/company-b2b-or-b2c-checker)
64+
- **CSC** - [Company Mission Statement](https://apidoc.cufinder.io/apis/company-mission-statement)
65+
- **CSN** - [Company Snapshot](https://apidoc.cufinder.io/apis/company-snapshot)
66+
- **NAO** - [Phone Number Normalizer](https://apidoc.cufinder.io/apis/phone-number-normalizer)
67+
- **NAA** - [Address Normalizer](https://apidoc.cufinder.io/apis/address-normalizer)
6068

6169

6270
**CUF - Company Name to Domain**
@@ -251,6 +259,78 @@ result = client.lbs(
251259
print(result)
252260
```
253261

262+
**BCD - B2B Customers Finder**
263+
264+
Returns company's careers page
265+
266+
```python
267+
result = client.bcd('stripe.com')
268+
print(result)
269+
```
270+
271+
**CCP - Company Career Page Finder**
272+
273+
Returns is company SaaS or not
274+
275+
```python
276+
result = client.ccp('stripe.com')
277+
print(result)
278+
```
279+
280+
**ISC - Company Saas Checker**
281+
282+
Returns is company SaaS or not
283+
284+
```python
285+
result = client.isc('stripe.com')
286+
print(result)
287+
```
288+
289+
**CBC - Company B2B or B2C Checker**
290+
291+
Returns company's business type
292+
293+
```python
294+
result = client.cbc('stripe.com')
295+
print(result)
296+
```
297+
298+
**CSC - Company Mission Statement**
299+
300+
Returns company's mission statement
301+
302+
```python
303+
result = client.csc('stripe.com')
304+
print(result)
305+
```
306+
307+
**CSN - Company Snapshot**
308+
309+
Returns company's snapshot information
310+
311+
```python
312+
result = client.csn('stripe.com')
313+
print(result)
314+
```
315+
316+
**NAO - Phone Number Normalizer**
317+
318+
Returns normalized phone
319+
320+
```python
321+
result = client.nao('+18006676389')
322+
print(result)
323+
```
324+
325+
**NAA - Address Normalizer**
326+
327+
Returns normalized address
328+
329+
```python
330+
result = client.naa('1095 avenue of the Americas, 6th Avenue ny 10036')
331+
print(result)
332+
```
333+
254334
## Error Handling
255335

256336
The SDK provides comprehensive error handling with custom error types:

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "cufinder-py"
7-
version = "1.0.1"
7+
version = "1.1.0"
88
description = "Python SDK for the CUFinder API."
99
readme = "README.md"
1010
requires-python = ">=3.8"

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
setup(
1616
name="cufinder-py",
17-
version="1.0.1",
17+
version="1.1.0",
1818
author="Cufinder Team",
1919
author_email="support@cufinder.io",
2020
description="Type-safe Python SDK for easily integrating with the Cufinder API",

src/cufinder/__init__.py

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434
from .services import *
3535
from .types import CseParams, PseParams, LbsParams
3636

37-
__version__ = "1.0.1"
37+
__version__ = "1.1.0"
3838
__author__ = "CUFinder Team"
3939
__email__ = "support@cufinder.io"
4040

@@ -89,6 +89,14 @@
8989
"CseResponse",
9090
"PseResponse",
9191
"LcufResponse",
92+
"BcdResponse",
93+
"CcpResponse",
94+
"IscResponse",
95+
"CbcResponse",
96+
"CscResponse",
97+
"CsnResponse",
98+
"NaoResponse",
99+
"NaaResponse",
92100
# Services
93101
"BaseService",
94102
"Cuf",
@@ -111,6 +119,14 @@
111119
"Cse",
112120
"Pse",
113121
"Lcuf",
122+
"Bcd",
123+
"Ccp",
124+
"Isc",
125+
"Cbc",
126+
"Csc",
127+
"Csn",
128+
"Nao",
129+
"Naa",
114130
# Types
115131
"CseParams",
116132
"PseParams",

src/cufinder/base_api_client.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def __init__(self, config: CufinderClientConfig, api_key: str):
9696
self.session.headers.update({
9797
'x-api-key': api_key,
9898
'Content-Type': 'application/x-www-form-urlencoded',
99-
'User-Agent': 'cufinder-py/1.0.1',
99+
'User-Agent': 'cufinder-py/1.1.0',
100100
})
101101

102102
# Set default timeout

src/cufinder/models/__init__.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,14 @@
2424
CseResponse,
2525
PseResponse,
2626
LcufResponse,
27+
BcdResponse,
28+
CcpResponse,
29+
IscResponse,
30+
CbcResponse,
31+
CscResponse,
32+
CsnResponse,
33+
NaoResponse,
34+
NaaResponse,
2735
)
2836

2937
__all__ = [
@@ -50,4 +58,12 @@
5058
"CseResponse",
5159
"PseResponse",
5260
"LcufResponse",
61+
"BcdResponse",
62+
"CcpResponse",
63+
"IscResponse",
64+
"CbcResponse",
65+
"CscResponse",
66+
"CsnResponse",
67+
"NaoResponse",
68+
"NaaResponse",
5369
]

src/cufinder/models/company.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,12 @@ class CloCompanyLocation(BaseModel):
135135
line1: Optional[str] = None
136136
line2: Optional[str] = None
137137
latitude: Optional[float] = None
138-
longitude: Optional[float] = None
138+
longitude: Optional[float] = None
139+
140+
141+
class SnapshotModel(BaseModel):
142+
"""Snapshot info model"""
143+
icp: str | None
144+
target_industries: List[str];
145+
target_personas: List[str];
146+
value_proposition: str | None

src/cufinder/models/responses.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
from typing import List, Optional, Union
44

55
from .base import BaseResponse
6-
from .company import Company, CompanySearchResult, LocalBusinessResult, LookalikeCompany, FundraisingInfo, CloCompanyLocation
6+
from .company import Company, CompanySearchResult, LocalBusinessResult, LookalikeCompany, FundraisingInfo, CloCompanyLocation, SnapshotModel
77
from .person import Person, PersonSearchResult, TepPerson
88

99

@@ -105,3 +105,36 @@ class PseResponse(BaseResponse):
105105
class LbsResponse(BaseResponse):
106106
"""LBS Response - Local Business Search"""
107107
companies: List[LocalBusinessResult]
108+
109+
110+
class BcdResponse(BaseResponse):
111+
"""BCD Response - Extract B2B Customers From the Domain"""
112+
customers: List[str]
113+
114+
115+
class CcpResponse(BaseResponse):
116+
careers_page_url: str | None
117+
118+
119+
class IscResponse(BaseResponse):
120+
is_saas: str
121+
122+
123+
class CbcResponse(BaseResponse):
124+
business_type: str
125+
126+
127+
class CscResponse(BaseResponse):
128+
mission_statement: str | None
129+
130+
131+
class CsnResponse(BaseResponse):
132+
company_snapshot: SnapshotModel
133+
134+
135+
class NaoResponse(BaseResponse):
136+
phone: str
137+
138+
139+
class NaaResponse(BaseResponse):
140+
address: str

0 commit comments

Comments
 (0)