apivault-skip-trace 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- apivault_skip_trace-0.1.0/LICENSE +21 -0
- apivault_skip_trace-0.1.0/PKG-INFO +119 -0
- apivault_skip_trace-0.1.0/README.md +92 -0
- apivault_skip_trace-0.1.0/apivault_skip_trace/__init__.py +15 -0
- apivault_skip_trace-0.1.0/apivault_skip_trace/client.py +173 -0
- apivault_skip_trace-0.1.0/apivault_skip_trace.egg-info/PKG-INFO +119 -0
- apivault_skip_trace-0.1.0/apivault_skip_trace.egg-info/SOURCES.txt +10 -0
- apivault_skip_trace-0.1.0/apivault_skip_trace.egg-info/dependency_links.txt +1 -0
- apivault_skip_trace-0.1.0/apivault_skip_trace.egg-info/requires.txt +1 -0
- apivault_skip_trace-0.1.0/apivault_skip_trace.egg-info/top_level.txt +1 -0
- apivault_skip_trace-0.1.0/pyproject.toml +32 -0
- apivault_skip_trace-0.1.0/setup.cfg +4 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 apivault-labs
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: apivault-skip-trace
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Skip Trace & People Finder — search by name, address, phone or email. Returns addresses, phones, emails, relatives, aliases. Powered by Apify.
|
|
5
|
+
Author: apivault-labs
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://apify.com/apivault_labs/skip-trace-people-finder
|
|
8
|
+
Project-URL: Documentation, https://github.com/apivault-labs/apivault-skip-trace
|
|
9
|
+
Project-URL: Repository, https://github.com/apivault-labs/apivault-skip-trace
|
|
10
|
+
Project-URL: Issues, https://github.com/apivault-labs/apivault-skip-trace/issues
|
|
11
|
+
Keywords: skip-trace,people-search,reverse-phone,reverse-address,public-records,lead-generation,real-estate,apify
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
22
|
+
Requires-Python: >=3.8
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: requests>=2.25.0
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
28
|
+
# apivault-skip-trace
|
|
29
|
+
|
|
30
|
+
Skip Trace & People Finder — Python SDK. Search by name, address, phone, or email. Returns addresses, phones, emails, relatives, aliases, and a match-confidence score.
|
|
31
|
+
|
|
32
|
+
**US public records. Real-time. No subscription. $6.50/1K lookups.**
|
|
33
|
+
|
|
34
|
+
[](https://pypi.org/project/apivault-skip-trace/)
|
|
35
|
+
[](https://pypi.org/project/apivault-skip-trace/)
|
|
36
|
+
|
|
37
|
+
## Install
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pip install apivault-skip-trace
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Quick Start
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
from apivault_skip_trace import SkipTrace
|
|
47
|
+
|
|
48
|
+
st = SkipTrace("your_apify_token") # get token at apify.com/account#/integrations
|
|
49
|
+
|
|
50
|
+
# Search by name
|
|
51
|
+
results = st.search_name("John Smith", location="Springfield, IL")
|
|
52
|
+
for person in results:
|
|
53
|
+
print(person["fullName"], person.get("phones"), person.get("emails"))
|
|
54
|
+
|
|
55
|
+
# Reverse phone lookup
|
|
56
|
+
results = st.search_phone("(202) 555-0182")
|
|
57
|
+
|
|
58
|
+
# Reverse address lookup
|
|
59
|
+
results = st.search_address("123 Main St", "Springfield, IL 62704")
|
|
60
|
+
|
|
61
|
+
# Reverse email lookup
|
|
62
|
+
results = st.search_email("jane.doe@gmail.com")
|
|
63
|
+
|
|
64
|
+
# Bulk (mixed queries in one call)
|
|
65
|
+
results = st.bulk_search(
|
|
66
|
+
names=["John Smith; IL", "Jane Doe; NY"],
|
|
67
|
+
phones=["2025550182"],
|
|
68
|
+
emails=["test@example.com"],
|
|
69
|
+
)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## What You Get Back
|
|
73
|
+
|
|
74
|
+
Each person dict contains:
|
|
75
|
+
|
|
76
|
+
| Field | Description |
|
|
77
|
+
|---|---|
|
|
78
|
+
| `fullName` | Full name |
|
|
79
|
+
| `firstName`, `lastName` | Parsed name components |
|
|
80
|
+
| `age`, `birthYear` | Age / birth year when available |
|
|
81
|
+
| `currentAddress` | Most recent address |
|
|
82
|
+
| `addresses` | All known addresses (current + past) |
|
|
83
|
+
| `phones` | Phone numbers with type (mobile/landline) |
|
|
84
|
+
| `emails` | Email addresses |
|
|
85
|
+
| `relatives` | Names of associated people |
|
|
86
|
+
| `aliases` | Also known as / maiden names |
|
|
87
|
+
| `matchScore` | Confidence score (0-100) |
|
|
88
|
+
| `bestEmail` | Top email (verified deliverable via MX) |
|
|
89
|
+
|
|
90
|
+
## Pricing
|
|
91
|
+
|
|
92
|
+
- **$6.50 per 1,000 lookups** (Apify pay-per-event)
|
|
93
|
+
- Pay only for matches (empty results are free)
|
|
94
|
+
- No subscription, no monthly minimum
|
|
95
|
+
- Get $5 free credits at [apify.com](https://apify.com/pricing)
|
|
96
|
+
|
|
97
|
+
## Get Your API Token
|
|
98
|
+
|
|
99
|
+
1. Sign up at [apify.com](https://apify.com) (free)
|
|
100
|
+
2. Go to [Settings → Integrations](https://console.apify.com/account#/integrations)
|
|
101
|
+
3. Copy your API token
|
|
102
|
+
|
|
103
|
+
## Use Cases
|
|
104
|
+
|
|
105
|
+
- **Real estate** — find property owners, skip trace vacant homes
|
|
106
|
+
- **Debt collection** — locate debtors with updated contact info
|
|
107
|
+
- **Sales prospecting** — enrich leads with phone + email
|
|
108
|
+
- **Background checks** — verify identity with addresses + relatives
|
|
109
|
+
- **Fraud prevention** — cross-reference provided info against public records
|
|
110
|
+
|
|
111
|
+
## Links
|
|
112
|
+
|
|
113
|
+
- [Apify Store](https://apify.com/apivault_labs/skip-trace-people-finder) — run in browser, no code
|
|
114
|
+
- [API Docs](https://docs.apify.com/api/v2) — REST API reference
|
|
115
|
+
- [n8n Node](https://www.npmjs.com/package/n8n-nodes-apivault-skip-trace) — no-code automation
|
|
116
|
+
|
|
117
|
+
## License
|
|
118
|
+
|
|
119
|
+
MIT
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# apivault-skip-trace
|
|
2
|
+
|
|
3
|
+
Skip Trace & People Finder — Python SDK. Search by name, address, phone, or email. Returns addresses, phones, emails, relatives, aliases, and a match-confidence score.
|
|
4
|
+
|
|
5
|
+
**US public records. Real-time. No subscription. $6.50/1K lookups.**
|
|
6
|
+
|
|
7
|
+
[](https://pypi.org/project/apivault-skip-trace/)
|
|
8
|
+
[](https://pypi.org/project/apivault-skip-trace/)
|
|
9
|
+
|
|
10
|
+
## Install
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
pip install apivault-skip-trace
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
```python
|
|
19
|
+
from apivault_skip_trace import SkipTrace
|
|
20
|
+
|
|
21
|
+
st = SkipTrace("your_apify_token") # get token at apify.com/account#/integrations
|
|
22
|
+
|
|
23
|
+
# Search by name
|
|
24
|
+
results = st.search_name("John Smith", location="Springfield, IL")
|
|
25
|
+
for person in results:
|
|
26
|
+
print(person["fullName"], person.get("phones"), person.get("emails"))
|
|
27
|
+
|
|
28
|
+
# Reverse phone lookup
|
|
29
|
+
results = st.search_phone("(202) 555-0182")
|
|
30
|
+
|
|
31
|
+
# Reverse address lookup
|
|
32
|
+
results = st.search_address("123 Main St", "Springfield, IL 62704")
|
|
33
|
+
|
|
34
|
+
# Reverse email lookup
|
|
35
|
+
results = st.search_email("jane.doe@gmail.com")
|
|
36
|
+
|
|
37
|
+
# Bulk (mixed queries in one call)
|
|
38
|
+
results = st.bulk_search(
|
|
39
|
+
names=["John Smith; IL", "Jane Doe; NY"],
|
|
40
|
+
phones=["2025550182"],
|
|
41
|
+
emails=["test@example.com"],
|
|
42
|
+
)
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## What You Get Back
|
|
46
|
+
|
|
47
|
+
Each person dict contains:
|
|
48
|
+
|
|
49
|
+
| Field | Description |
|
|
50
|
+
|---|---|
|
|
51
|
+
| `fullName` | Full name |
|
|
52
|
+
| `firstName`, `lastName` | Parsed name components |
|
|
53
|
+
| `age`, `birthYear` | Age / birth year when available |
|
|
54
|
+
| `currentAddress` | Most recent address |
|
|
55
|
+
| `addresses` | All known addresses (current + past) |
|
|
56
|
+
| `phones` | Phone numbers with type (mobile/landline) |
|
|
57
|
+
| `emails` | Email addresses |
|
|
58
|
+
| `relatives` | Names of associated people |
|
|
59
|
+
| `aliases` | Also known as / maiden names |
|
|
60
|
+
| `matchScore` | Confidence score (0-100) |
|
|
61
|
+
| `bestEmail` | Top email (verified deliverable via MX) |
|
|
62
|
+
|
|
63
|
+
## Pricing
|
|
64
|
+
|
|
65
|
+
- **$6.50 per 1,000 lookups** (Apify pay-per-event)
|
|
66
|
+
- Pay only for matches (empty results are free)
|
|
67
|
+
- No subscription, no monthly minimum
|
|
68
|
+
- Get $5 free credits at [apify.com](https://apify.com/pricing)
|
|
69
|
+
|
|
70
|
+
## Get Your API Token
|
|
71
|
+
|
|
72
|
+
1. Sign up at [apify.com](https://apify.com) (free)
|
|
73
|
+
2. Go to [Settings → Integrations](https://console.apify.com/account#/integrations)
|
|
74
|
+
3. Copy your API token
|
|
75
|
+
|
|
76
|
+
## Use Cases
|
|
77
|
+
|
|
78
|
+
- **Real estate** — find property owners, skip trace vacant homes
|
|
79
|
+
- **Debt collection** — locate debtors with updated contact info
|
|
80
|
+
- **Sales prospecting** — enrich leads with phone + email
|
|
81
|
+
- **Background checks** — verify identity with addresses + relatives
|
|
82
|
+
- **Fraud prevention** — cross-reference provided info against public records
|
|
83
|
+
|
|
84
|
+
## Links
|
|
85
|
+
|
|
86
|
+
- [Apify Store](https://apify.com/apivault_labs/skip-trace-people-finder) — run in browser, no code
|
|
87
|
+
- [API Docs](https://docs.apify.com/api/v2) — REST API reference
|
|
88
|
+
- [n8n Node](https://www.npmjs.com/package/n8n-nodes-apivault-skip-trace) — no-code automation
|
|
89
|
+
|
|
90
|
+
## License
|
|
91
|
+
|
|
92
|
+
MIT
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"""Skip Trace & People Finder — Python SDK.
|
|
2
|
+
|
|
3
|
+
Usage:
|
|
4
|
+
from apivault_skip_trace import SkipTrace
|
|
5
|
+
|
|
6
|
+
st = SkipTrace("your_apify_token")
|
|
7
|
+
results = st.search_name("John Smith", location="Springfield, IL")
|
|
8
|
+
for person in results:
|
|
9
|
+
print(person["fullName"], person.get("phones"), person.get("emails"))
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from .client import SkipTrace
|
|
13
|
+
|
|
14
|
+
__all__ = ["SkipTrace"]
|
|
15
|
+
__version__ = "0.1.0"
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
"""Skip Trace client — thin wrapper over the Apify Actor API."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import requests
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
ACTOR_ID = "apivault_labs~skip-trace-people-finder"
|
|
9
|
+
API_BASE = "https://api.apify.com/v2"
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class SkipTrace:
|
|
13
|
+
"""Skip Trace & People Finder.
|
|
14
|
+
|
|
15
|
+
Look up anyone in the US by name, address, phone, or email.
|
|
16
|
+
Returns current + past addresses, phone numbers, emails,
|
|
17
|
+
relatives, aliases, and a match-confidence score.
|
|
18
|
+
|
|
19
|
+
Pricing: $6.50 per 1,000 lookups (pay only for matches).
|
|
20
|
+
|
|
21
|
+
Args:
|
|
22
|
+
token: Your Apify API token. Get one free at https://apify.com
|
|
23
|
+
timeout: Max seconds to wait for the run (default 120).
|
|
24
|
+
memory_mb: Memory for the run (default 256).
|
|
25
|
+
"""
|
|
26
|
+
|
|
27
|
+
def __init__(self, token: str, *, timeout: int = 120, memory_mb: int = 256):
|
|
28
|
+
if not token:
|
|
29
|
+
raise ValueError(
|
|
30
|
+
"Apify API token required. Get one at https://console.apify.com/account#/integrations"
|
|
31
|
+
)
|
|
32
|
+
self._token = token
|
|
33
|
+
self._timeout = timeout
|
|
34
|
+
self._memory = memory_mb
|
|
35
|
+
|
|
36
|
+
def _run(self, input_data: dict[str, Any]) -> list[dict]:
|
|
37
|
+
"""Run the actor and return dataset items."""
|
|
38
|
+
url = f"{API_BASE}/acts/{ACTOR_ID}/run-sync-get-dataset-items"
|
|
39
|
+
params = {"token": self._token, "timeout": self._timeout, "memory": self._memory}
|
|
40
|
+
resp = requests.post(url, json=input_data, params=params, timeout=self._timeout + 30)
|
|
41
|
+
if resp.status_code == 402:
|
|
42
|
+
raise RuntimeError(
|
|
43
|
+
"Insufficient Apify credits. Top up at https://console.apify.com/billing"
|
|
44
|
+
)
|
|
45
|
+
if resp.status_code >= 400:
|
|
46
|
+
raise RuntimeError(f"Apify API error {resp.status_code}: {resp.text[:200]}")
|
|
47
|
+
return resp.json()
|
|
48
|
+
|
|
49
|
+
def search_name(
|
|
50
|
+
self,
|
|
51
|
+
name: str,
|
|
52
|
+
*,
|
|
53
|
+
location: str | None = None,
|
|
54
|
+
max_results: int = 10,
|
|
55
|
+
source: str = "auto",
|
|
56
|
+
) -> list[dict]:
|
|
57
|
+
"""Search by full name.
|
|
58
|
+
|
|
59
|
+
Args:
|
|
60
|
+
name: Full name, e.g. "Jane Doe".
|
|
61
|
+
location: Optional city/state/ZIP to narrow results,
|
|
62
|
+
e.g. "Springfield, IL 62704".
|
|
63
|
+
max_results: Max people to return (1-100).
|
|
64
|
+
source: "auto" (recommended), "merge" (cross-reference), or "default".
|
|
65
|
+
|
|
66
|
+
Returns:
|
|
67
|
+
List of person dicts with addresses, phones, emails, relatives, etc.
|
|
68
|
+
"""
|
|
69
|
+
query = f"{name}; {location}" if location else name
|
|
70
|
+
return self._run({
|
|
71
|
+
"name": [query],
|
|
72
|
+
"max_results": max_results,
|
|
73
|
+
"source": source,
|
|
74
|
+
})
|
|
75
|
+
|
|
76
|
+
def search_address(
|
|
77
|
+
self,
|
|
78
|
+
street: str,
|
|
79
|
+
city_state_zip: str,
|
|
80
|
+
*,
|
|
81
|
+
max_results: int = 10,
|
|
82
|
+
source: str = "auto",
|
|
83
|
+
) -> list[dict]:
|
|
84
|
+
"""Reverse address lookup — find people associated with an address.
|
|
85
|
+
|
|
86
|
+
Args:
|
|
87
|
+
street: Street address, e.g. "123 Main St".
|
|
88
|
+
city_state_zip: City, state ZIP, e.g. "Springfield, IL 62704".
|
|
89
|
+
max_results: Max people to return.
|
|
90
|
+
|
|
91
|
+
Returns:
|
|
92
|
+
List of person dicts.
|
|
93
|
+
"""
|
|
94
|
+
return self._run({
|
|
95
|
+
"street_citystatezip": [f"{street}; {city_state_zip}"],
|
|
96
|
+
"max_results": max_results,
|
|
97
|
+
"source": source,
|
|
98
|
+
})
|
|
99
|
+
|
|
100
|
+
def search_phone(
|
|
101
|
+
self,
|
|
102
|
+
phone: str,
|
|
103
|
+
*,
|
|
104
|
+
max_results: int = 10,
|
|
105
|
+
source: str = "auto",
|
|
106
|
+
) -> list[dict]:
|
|
107
|
+
"""Reverse phone lookup.
|
|
108
|
+
|
|
109
|
+
Args:
|
|
110
|
+
phone: US phone number, e.g. "(202) 555-0182" or "2025550182".
|
|
111
|
+
|
|
112
|
+
Returns:
|
|
113
|
+
List of person dicts.
|
|
114
|
+
"""
|
|
115
|
+
return self._run({
|
|
116
|
+
"phone_number": [phone],
|
|
117
|
+
"max_results": max_results,
|
|
118
|
+
"source": source,
|
|
119
|
+
})
|
|
120
|
+
|
|
121
|
+
def search_email(
|
|
122
|
+
self,
|
|
123
|
+
email: str,
|
|
124
|
+
*,
|
|
125
|
+
max_results: int = 10,
|
|
126
|
+
source: str = "auto",
|
|
127
|
+
) -> list[dict]:
|
|
128
|
+
"""Reverse email lookup — find the person behind an email.
|
|
129
|
+
|
|
130
|
+
Args:
|
|
131
|
+
email: Email address, e.g. "jane.doe@gmail.com".
|
|
132
|
+
|
|
133
|
+
Returns:
|
|
134
|
+
List of person dicts.
|
|
135
|
+
"""
|
|
136
|
+
return self._run({
|
|
137
|
+
"email": [email],
|
|
138
|
+
"max_results": max_results,
|
|
139
|
+
"source": source,
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
def bulk_search(
|
|
143
|
+
self,
|
|
144
|
+
*,
|
|
145
|
+
names: list[str] | None = None,
|
|
146
|
+
addresses: list[str] | None = None,
|
|
147
|
+
phones: list[str] | None = None,
|
|
148
|
+
emails: list[str] | None = None,
|
|
149
|
+
max_results: int = 100,
|
|
150
|
+
source: str = "auto",
|
|
151
|
+
) -> list[dict]:
|
|
152
|
+
"""Bulk lookup — multiple queries of any type in one call.
|
|
153
|
+
|
|
154
|
+
Args:
|
|
155
|
+
names: List of "Name; Location" strings.
|
|
156
|
+
addresses: List of "Street; City, ST ZIP" strings.
|
|
157
|
+
phones: List of phone numbers.
|
|
158
|
+
emails: List of emails.
|
|
159
|
+
max_results: Max per query.
|
|
160
|
+
|
|
161
|
+
Returns:
|
|
162
|
+
Combined list of all person dicts.
|
|
163
|
+
"""
|
|
164
|
+
input_data: dict[str, Any] = {"max_results": max_results, "source": source}
|
|
165
|
+
if names:
|
|
166
|
+
input_data["name"] = names
|
|
167
|
+
if addresses:
|
|
168
|
+
input_data["street_citystatezip"] = addresses
|
|
169
|
+
if phones:
|
|
170
|
+
input_data["phone_number"] = phones
|
|
171
|
+
if emails:
|
|
172
|
+
input_data["email"] = emails
|
|
173
|
+
return self._run(input_data)
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: apivault-skip-trace
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Skip Trace & People Finder — search by name, address, phone or email. Returns addresses, phones, emails, relatives, aliases. Powered by Apify.
|
|
5
|
+
Author: apivault-labs
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://apify.com/apivault_labs/skip-trace-people-finder
|
|
8
|
+
Project-URL: Documentation, https://github.com/apivault-labs/apivault-skip-trace
|
|
9
|
+
Project-URL: Repository, https://github.com/apivault-labs/apivault-skip-trace
|
|
10
|
+
Project-URL: Issues, https://github.com/apivault-labs/apivault-skip-trace/issues
|
|
11
|
+
Keywords: skip-trace,people-search,reverse-phone,reverse-address,public-records,lead-generation,real-estate,apify
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Topic :: Software Development :: Libraries
|
|
22
|
+
Requires-Python: >=3.8
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: requests>=2.25.0
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
28
|
+
# apivault-skip-trace
|
|
29
|
+
|
|
30
|
+
Skip Trace & People Finder — Python SDK. Search by name, address, phone, or email. Returns addresses, phones, emails, relatives, aliases, and a match-confidence score.
|
|
31
|
+
|
|
32
|
+
**US public records. Real-time. No subscription. $6.50/1K lookups.**
|
|
33
|
+
|
|
34
|
+
[](https://pypi.org/project/apivault-skip-trace/)
|
|
35
|
+
[](https://pypi.org/project/apivault-skip-trace/)
|
|
36
|
+
|
|
37
|
+
## Install
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
pip install apivault-skip-trace
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## Quick Start
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
from apivault_skip_trace import SkipTrace
|
|
47
|
+
|
|
48
|
+
st = SkipTrace("your_apify_token") # get token at apify.com/account#/integrations
|
|
49
|
+
|
|
50
|
+
# Search by name
|
|
51
|
+
results = st.search_name("John Smith", location="Springfield, IL")
|
|
52
|
+
for person in results:
|
|
53
|
+
print(person["fullName"], person.get("phones"), person.get("emails"))
|
|
54
|
+
|
|
55
|
+
# Reverse phone lookup
|
|
56
|
+
results = st.search_phone("(202) 555-0182")
|
|
57
|
+
|
|
58
|
+
# Reverse address lookup
|
|
59
|
+
results = st.search_address("123 Main St", "Springfield, IL 62704")
|
|
60
|
+
|
|
61
|
+
# Reverse email lookup
|
|
62
|
+
results = st.search_email("jane.doe@gmail.com")
|
|
63
|
+
|
|
64
|
+
# Bulk (mixed queries in one call)
|
|
65
|
+
results = st.bulk_search(
|
|
66
|
+
names=["John Smith; IL", "Jane Doe; NY"],
|
|
67
|
+
phones=["2025550182"],
|
|
68
|
+
emails=["test@example.com"],
|
|
69
|
+
)
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## What You Get Back
|
|
73
|
+
|
|
74
|
+
Each person dict contains:
|
|
75
|
+
|
|
76
|
+
| Field | Description |
|
|
77
|
+
|---|---|
|
|
78
|
+
| `fullName` | Full name |
|
|
79
|
+
| `firstName`, `lastName` | Parsed name components |
|
|
80
|
+
| `age`, `birthYear` | Age / birth year when available |
|
|
81
|
+
| `currentAddress` | Most recent address |
|
|
82
|
+
| `addresses` | All known addresses (current + past) |
|
|
83
|
+
| `phones` | Phone numbers with type (mobile/landline) |
|
|
84
|
+
| `emails` | Email addresses |
|
|
85
|
+
| `relatives` | Names of associated people |
|
|
86
|
+
| `aliases` | Also known as / maiden names |
|
|
87
|
+
| `matchScore` | Confidence score (0-100) |
|
|
88
|
+
| `bestEmail` | Top email (verified deliverable via MX) |
|
|
89
|
+
|
|
90
|
+
## Pricing
|
|
91
|
+
|
|
92
|
+
- **$6.50 per 1,000 lookups** (Apify pay-per-event)
|
|
93
|
+
- Pay only for matches (empty results are free)
|
|
94
|
+
- No subscription, no monthly minimum
|
|
95
|
+
- Get $5 free credits at [apify.com](https://apify.com/pricing)
|
|
96
|
+
|
|
97
|
+
## Get Your API Token
|
|
98
|
+
|
|
99
|
+
1. Sign up at [apify.com](https://apify.com) (free)
|
|
100
|
+
2. Go to [Settings → Integrations](https://console.apify.com/account#/integrations)
|
|
101
|
+
3. Copy your API token
|
|
102
|
+
|
|
103
|
+
## Use Cases
|
|
104
|
+
|
|
105
|
+
- **Real estate** — find property owners, skip trace vacant homes
|
|
106
|
+
- **Debt collection** — locate debtors with updated contact info
|
|
107
|
+
- **Sales prospecting** — enrich leads with phone + email
|
|
108
|
+
- **Background checks** — verify identity with addresses + relatives
|
|
109
|
+
- **Fraud prevention** — cross-reference provided info against public records
|
|
110
|
+
|
|
111
|
+
## Links
|
|
112
|
+
|
|
113
|
+
- [Apify Store](https://apify.com/apivault_labs/skip-trace-people-finder) — run in browser, no code
|
|
114
|
+
- [API Docs](https://docs.apify.com/api/v2) — REST API reference
|
|
115
|
+
- [n8n Node](https://www.npmjs.com/package/n8n-nodes-apivault-skip-trace) — no-code automation
|
|
116
|
+
|
|
117
|
+
## License
|
|
118
|
+
|
|
119
|
+
MIT
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
LICENSE
|
|
2
|
+
README.md
|
|
3
|
+
pyproject.toml
|
|
4
|
+
apivault_skip_trace/__init__.py
|
|
5
|
+
apivault_skip_trace/client.py
|
|
6
|
+
apivault_skip_trace.egg-info/PKG-INFO
|
|
7
|
+
apivault_skip_trace.egg-info/SOURCES.txt
|
|
8
|
+
apivault_skip_trace.egg-info/dependency_links.txt
|
|
9
|
+
apivault_skip_trace.egg-info/requires.txt
|
|
10
|
+
apivault_skip_trace.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
requests>=2.25.0
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
apivault_skip_trace
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "apivault-skip-trace"
|
|
7
|
+
version = "0.1.0"
|
|
8
|
+
description = "Skip Trace & People Finder — search by name, address, phone or email. Returns addresses, phones, emails, relatives, aliases. Powered by Apify."
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
license = {text = "MIT"}
|
|
11
|
+
requires-python = ">=3.8"
|
|
12
|
+
authors = [{name = "apivault-labs"}]
|
|
13
|
+
keywords = ["skip-trace", "people-search", "reverse-phone", "reverse-address", "public-records", "lead-generation", "real-estate", "apify"]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 4 - Beta",
|
|
16
|
+
"Intended Audience :: Developers",
|
|
17
|
+
"License :: OSI Approved :: MIT License",
|
|
18
|
+
"Programming Language :: Python :: 3",
|
|
19
|
+
"Programming Language :: Python :: 3.8",
|
|
20
|
+
"Programming Language :: Python :: 3.9",
|
|
21
|
+
"Programming Language :: Python :: 3.10",
|
|
22
|
+
"Programming Language :: Python :: 3.11",
|
|
23
|
+
"Programming Language :: Python :: 3.12",
|
|
24
|
+
"Topic :: Software Development :: Libraries",
|
|
25
|
+
]
|
|
26
|
+
dependencies = ["requests>=2.25.0"]
|
|
27
|
+
|
|
28
|
+
[project.urls]
|
|
29
|
+
Homepage = "https://apify.com/apivault_labs/skip-trace-people-finder"
|
|
30
|
+
Documentation = "https://github.com/apivault-labs/apivault-skip-trace"
|
|
31
|
+
Repository = "https://github.com/apivault-labs/apivault-skip-trace"
|
|
32
|
+
Issues = "https://github.com/apivault-labs/apivault-skip-trace/issues"
|