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

185

Monthly users

98

Runs succeeded

98%

Response time

12 hours

Last modified

6 days ago

AS

ASP.NET Web Developer

Closed

asparagus_stepladder opened this issue
7 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

6 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

6 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

6 days ago

Yes this is working better thank you