Skip Trace avatar
Skip Trace

Pricing

$10.00 / 1,000 results

Go to Store
Skip Trace

Skip Trace

Developed by

Sorower Hossan

Maintained by Community

Locate hard-to-find individuals with our powerful skip trace/tracing API. TruePeopleSearch, Fastpeoplesearch, Lead Finder, Truthfinder, Spokeo, BeenVerified, PeopleLooker, PeopleFinders

5.0 (1)

Pricing

$10.00 / 1,000 results

12

Total users

193

Monthly users

106

Runs succeeded

98%

Response time

12 hours

Last modified

6 hours ago

AS

ASP.NET Web Developer

Closed

asparagus_stepladder opened this issue
8 days ago

Not sure what happened I just called it using the API and I think if failed to return results

sorower avatar

Hi there, can you share the code that you used to try the API?

Also I have a direct API on Rapid: https://rapidapi.com/oneapiproject/api/skip-tracing-working-api/

Let me know, how can I help. Thanks.

sorower avatar

Hi, I was able to fix the issue.

Please try now and let me know the results. Thanks!

AS

asparagus_stepladder

8 days ago

Thanks. Will try today. I am making a endpoint where users can upload a excel or csv list of contact and then cleaning it up to send to your endpoint.

AS

asparagus_stepladder

8 days ago

Here is my code if it helps at all.

[ApiExplorerSettings(IgnoreApi = true)] [HttpPost("run")] [Consumes("multipart/form-data")] public async Task<ActionResult> RunMapped( [FromForm] IFormFile file, [FromForm] FieldMappingRequest mapping) { try { _logger.LogInformation("Starting mapped skip trace run: File: {FileName}", file?.FileName);

1if (file == null || file.Length == 0)
2       {
3           _logger.LogWarning("Mapped skip trace rejected: No file or empty file provided");
4           return BadRequest("No file provided or file is empty.");
5       }
6
7       if (!IsValidFileExtension(file.FileName))
8       {
9           _logger.LogWarning("Mapped skip trace rejected: Invalid file type: {FileName}", file.FileName);
10           return BadRequest("Invalid file type. Only CSV and XLSX files are supported.");
11       }
12
13       if (!IsValidMapping(mapping))
14       {
15           _logger.LogWarning("Mapped skip trace rejected: Invalid column mapping");
16           return BadRequest("Invalid column mapping. Required fields must be mapped to columns.");
17       }
18
19       // Build the map: DTO property name → column header name
20       var columnMap = new Dictionary<string, string>
21       {
22           ["FirstName"] = mapping.FirstNameColumn,
23           ["LastName"] = mapping.LastNameColumn,
24           ["StreetAddress"] = mapping.StreetColumn,
25           ["City"] = mapping.CityColumn,
26           ["State"] = mapping.StateColumn,
27           ["ZipCode"] = mapping.ZipColumn,
28       };
29
30       // Parse into your AddressDto list
31       var rows = await _files.ParseAddressesAsync(
32           file.OpenReadStream(),
33           file.FileName,
34           columnMap
35       );
36
37       if (rows == null || !rows.Any())
38       {
39           _logger.LogWarning("Mapped skip trace: No valid addresses found in file {FileName}", file.FileName);
40           return BadRequest("No valid addresses found in the file.");
41       }
42
43       _logger.LogInformation("Parsed {Count} addresses from file {FileName}", rows.Count(), file.FileName);
44
45       // Kick off skip‑trace by raw addresses
46       var activity = await _skip.StartSkipTraceByAddressesAsync(rows, OrgId);
47
48       _logger.LogInformation("Skip trace activity created: {ActivityId} with {Count} addresses",
49           activity.Id, rows.Count());
50
51       return CreatedAtAction(nameof(GetById), new { id = activity.Id }, activity);
52   }
53   catch (FormatException ex)
54   {
55       _logger.LogError(ex, "Format error parsing file {FileName}", file?.FileName);
56       return BadRequest($"Error parsing file: {ex.Message}");
57   }
58   catch (Exception ex)
59   {
60       _logger.LogError(ex, "Error running mapped skip trace: {FileName}", file?.FileName);
61       return StatusCode(500, "An error occurred while processing your request. Please try again.");
62   }

}

///

/// 3) Starts a skip‑trace run over an existing set of contact IDs. /// [HttpPost] public async Task<ActionResult> Start([FromBody] int[] contactIds) { try { _logger.LogInformation("Starting skip trace for {Count} contacts", contactIds?.Length ?? 0);

1if (contactIds == null || contactIds.Length == 0)
2       {
3           _logger.LogWarning("Skip trace rejected: No contact IDs provided");
4           return BadRequest("No contact IDs provided.");
5       }
6
7       // This is a more direct method that does both steps in one call
8       var activity = await _skip.StartSkipTraceAsync(contactIds, OrgId);
9
10       _logger.LogInformation("Skip trace activity created: {ActivityId} for {Count} contacts",
11           activity.Id, contactIds.Length);
12
13       return CreatedAtAction(nameof(GetById), new { id = activity.Id }, activity);
14   }
15   catch (Exception ex)
16   {
17       _logger.LogError(ex, "Error starting skip trace for {Count} contacts", contactIds?.Length ?? 0);
18       return StatusCode(500, "An error occurred while processing your request. Please try again.");
19   }

}

sorower avatar

Can you please recheck now? I just added a fix.

AS

asparagus_stepladder

7 days ago

Yes this is working better thank you

Pricing

Pricing model

Pay per result 

This Actor is paid per result. You are not charged for the Apify platform usage, but only a fixed price for each dataset of 1,000 items in the Actor outputs.

Price per 1,000 items

$10.00