[{"data":1,"prerenderedAt":1447},["ShallowReactive",2],{"docs-navigation":3,"docs-\u002Fguides\u002Fbulk-enrichment":459},[4,12,16,21,27,34,41,47,54,59,65,71,76,81,86,91,96,101,106,111,116,121,127,132,137,142,148,154,159,164,169,174,179,186,192,197,202,208,213,218,223,227,232,237,240,244,249,253,256,260,263,267,270,273,279,282,286,289,292,295,299,303,306,310,313,316,319,322,326,330,334,338,343,347,350,353,356,359,362,365,368,371,374,377,380,383,386,389,393,396,399,401,403,405,407,409,411,413,415,417,419,421,423,425,427,429,431,433,435,440,443,447,450,453,456],{"path":5,"title":6,"category":7,"order":8,"family":9,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fagents","Agent brief","mcp",40,"AI agents",null,"new",{"path":13,"title":14,"category":7,"order":15,"family":9,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fai-agents","Use Reverse Contact from an AI agent",10,{"path":17,"title":18,"category":19,"order":20,"family":10,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fapi-reference","API reference","introduction",30,{"path":22,"title":23,"category":19,"order":24,"family":25,"subfamily":10,"status":26,"endpointId":10,"badgeLabel":10},"\u002Fauthentication","Authentication",20,"Get started","updated",{"path":28,"title":29,"category":30,"order":31,"family":32,"subfamily":10,"status":11,"endpointId":33,"badgeLabel":10},"\u002Fendpoints\u002Fbulk-enrich-persons","Bulk enrichment","endpoints",660,"Bulk","bulk-enrich-persons",{"path":35,"title":36,"category":30,"order":37,"family":38,"subfamily":39,"status":26,"endpointId":40,"badgeLabel":10},"\u002Fendpoints\u002Fcheck-company","Company profile status",220,"Fetch","Company","check-company",{"path":42,"title":43,"category":30,"order":44,"family":38,"subfamily":45,"status":26,"endpointId":46,"badgeLabel":10},"\u002Fendpoints\u002Fcheck-person","Person profile status",120,"Person","check-person",{"path":48,"title":49,"category":30,"order":50,"family":51,"subfamily":52,"status":10,"endpointId":53,"badgeLabel":10},"\u002Fendpoints\u002Fcontact-email","Find Email",600,"Contact","Email","contact-email",{"path":55,"title":56,"category":30,"order":57,"family":51,"subfamily":52,"status":10,"endpointId":58,"badgeLabel":10},"\u002Fendpoints\u002Fcontact-email-verify","Verify Email",605,"contact-email-verify",{"path":60,"title":61,"category":30,"order":62,"family":51,"subfamily":63,"status":10,"endpointId":64,"badgeLabel":10},"\u002Fendpoints\u002Fcontact-phone","Find Phone",610,"Phone","contact-phone",{"path":66,"title":67,"category":30,"order":68,"family":69,"subfamily":39,"status":26,"endpointId":70,"badgeLabel":10},"\u002Fendpoints\u002Fenrich-company","Enrich company",90,"Enrichment","enrich-company",{"path":72,"title":73,"category":30,"order":74,"family":69,"subfamily":45,"status":26,"endpointId":75,"badgeLabel":10},"\u002Fendpoints\u002Fenrich-person","Enrich profile",80,"enrich-person",{"path":77,"title":78,"category":30,"order":79,"family":38,"subfamily":39,"status":26,"endpointId":80,"badgeLabel":10},"\u002Fendpoints\u002Ffetch-company","Company profile",200,"fetch-company",{"path":82,"title":83,"category":30,"order":84,"family":38,"subfamily":39,"status":26,"endpointId":85,"badgeLabel":10},"\u002Fendpoints\u002Ffetch-company-live","Company profile live",210,"fetch-company-live",{"path":87,"title":88,"category":30,"order":89,"family":38,"subfamily":45,"status":26,"endpointId":90,"badgeLabel":10},"\u002Fendpoints\u002Ffetch-profile","Person profile",100,"fetch-profile",{"path":92,"title":93,"category":30,"order":94,"family":38,"subfamily":45,"status":26,"endpointId":95,"badgeLabel":10},"\u002Fendpoints\u002Ffetch-profile-live","Person profile live",110,"fetch-profile-live",{"path":97,"title":98,"category":30,"order":99,"family":32,"subfamily":10,"status":11,"endpointId":100,"badgeLabel":10},"\u002Fendpoints\u002Fjob","Get a job",662,"job",{"path":102,"title":103,"category":30,"order":104,"family":32,"subfamily":10,"status":11,"endpointId":105,"badgeLabel":10},"\u002Fendpoints\u002Fjob-cancel","Cancel a job",664,"job-cancel",{"path":107,"title":108,"category":30,"order":109,"family":32,"subfamily":10,"status":11,"endpointId":110,"badgeLabel":10},"\u002Fendpoints\u002Fjob-results","Download job results",663,"job-results",{"path":112,"title":113,"category":30,"order":114,"family":32,"subfamily":10,"status":11,"endpointId":115,"badgeLabel":10},"\u002Fendpoints\u002Fjob-rows","Read job results by page",663.5,"job-rows",{"path":117,"title":118,"category":30,"order":119,"family":32,"subfamily":10,"status":11,"endpointId":120,"badgeLabel":10},"\u002Fendpoints\u002Fjobs","Job history",661,"jobs",{"path":122,"title":123,"category":30,"order":124,"family":125,"subfamily":125,"status":11,"endpointId":126,"badgeLabel":10},"\u002Fendpoints\u002Flist","Get a List",642,"Lists","list",{"path":128,"title":129,"category":30,"order":130,"family":125,"subfamily":125,"status":11,"endpointId":131,"badgeLabel":10},"\u002Fendpoints\u002Flist-create","Create a List",641,"list-create",{"path":133,"title":134,"category":30,"order":135,"family":125,"subfamily":125,"status":11,"endpointId":136,"badgeLabel":10},"\u002Fendpoints\u002Flist-delete","Delete a List",643,"list-delete",{"path":138,"title":139,"category":30,"order":140,"family":125,"subfamily":125,"status":11,"endpointId":141,"badgeLabel":10},"\u002Fendpoints\u002Flist-export","Export a List",644,"list-export",{"path":143,"title":144,"category":30,"order":145,"family":125,"subfamily":146,"status":11,"endpointId":147,"badgeLabel":10},"\u002Fendpoints\u002Flist-intake-signals","Import members and data",648,"Imports","list-intake-signals",{"path":149,"title":150,"category":30,"order":151,"family":125,"subfamily":152,"status":11,"endpointId":153,"badgeLabel":10},"\u002Fendpoints\u002Flist-members","List members",645,"Members","list-members",{"path":155,"title":156,"category":30,"order":157,"family":125,"subfamily":152,"status":11,"endpointId":158,"badgeLabel":10},"\u002Fendpoints\u002Flist-members-add","Add members",646,"list-members-add",{"path":160,"title":161,"category":30,"order":162,"family":125,"subfamily":152,"status":11,"endpointId":163,"badgeLabel":10},"\u002Fendpoints\u002Flist-members-remove","Remove members",647,"list-members-remove",{"path":165,"title":166,"category":30,"order":167,"family":125,"subfamily":146,"status":11,"endpointId":168,"badgeLabel":10},"\u002Fendpoints\u002Flist-operation","Read a List operation",649,"list-operation",{"path":170,"title":171,"category":30,"order":172,"family":125,"subfamily":146,"status":11,"endpointId":173,"badgeLabel":10},"\u002Fendpoints\u002Flist-operation-cancel","Cancel a List operation",650,"list-operation-cancel",{"path":175,"title":176,"category":30,"order":177,"family":125,"subfamily":125,"status":11,"endpointId":178,"badgeLabel":10},"\u002Fendpoints\u002Flists","All Lists",640,"lists",{"path":180,"title":181,"category":30,"order":182,"family":183,"subfamily":184,"status":11,"endpointId":185,"badgeLabel":10},"\u002Fendpoints\u002Fsearch-companies","Company search",94,"Search","Companies","search-organizations",{"path":187,"title":188,"category":30,"order":189,"family":190,"subfamily":10,"status":11,"endpointId":191,"badgeLabel":10},"\u002Fendpoints\u002Fsearch-companies-available-fields","Company search available fields",720,"Utility","search-organizations-available-fields",{"path":193,"title":194,"category":30,"order":195,"family":183,"subfamily":184,"status":11,"endpointId":196,"badgeLabel":10},"\u002Fendpoints\u002Fsearch-companies-count","Company search count",95,"search-organizations-count",{"path":198,"title":199,"category":30,"order":200,"family":183,"subfamily":184,"status":11,"endpointId":201,"badgeLabel":10},"\u002Fendpoints\u002Fsearch-companies-prompt","Agentic Company Search",97,"search-organizations-prompt",{"path":203,"title":204,"category":30,"order":205,"family":183,"subfamily":206,"status":11,"endpointId":207,"badgeLabel":10},"\u002Fendpoints\u002Fsearch-people","People search",92,"People","search-people",{"path":209,"title":210,"category":30,"order":211,"family":190,"subfamily":10,"status":11,"endpointId":212,"badgeLabel":10},"\u002Fendpoints\u002Fsearch-people-auto-suggestion","People auto-suggestion",730,"search-people-auto-suggestion",{"path":214,"title":215,"category":30,"order":216,"family":190,"subfamily":10,"status":11,"endpointId":217,"badgeLabel":10},"\u002Fendpoints\u002Fsearch-people-available-fields","People search available fields",710,"search-people-available-fields",{"path":219,"title":220,"category":30,"order":221,"family":183,"subfamily":206,"status":11,"endpointId":222,"badgeLabel":10},"\u002Fendpoints\u002Fsearch-people-count","People search count",93,"search-people-count",{"path":224,"title":225,"category":30,"order":195,"family":183,"subfamily":206,"status":11,"endpointId":226,"badgeLabel":10},"\u002Fendpoints\u002Fsearch-people-lookalike","People lookalike","search-people-lookalike",{"path":228,"title":229,"category":30,"order":230,"family":183,"subfamily":206,"status":11,"endpointId":231,"badgeLabel":10},"\u002Fendpoints\u002Fsearch-people-prompt","Agentic Search",96,"search-people-prompt",{"path":233,"title":234,"category":30,"order":235,"family":190,"subfamily":10,"status":26,"endpointId":236,"badgeLabel":10},"\u002Fendpoints\u002Fusage","Usage",700,"usage",{"path":238,"title":239,"category":19,"order":15,"family":25,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fgetting-started","Getting started",{"path":241,"title":242,"category":243,"order":20,"family":9,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fagent-skills","Agent skills","cli",{"path":245,"title":246,"category":247,"order":20,"family":248,"subfamily":10,"status":26,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fapi-key-management","API key management","guides","Credits & limits",{"path":250,"title":251,"category":247,"order":24,"family":252,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fbuild-a-list","Build your first List","Work in bulk",{"path":254,"title":255,"category":247,"order":20,"family":252,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fbulk-enrichment","Enrich people in bulk",{"path":257,"title":258,"category":243,"order":15,"family":259,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fcli","Command line interface (CLI)","CLI",{"path":261,"title":262,"category":247,"order":15,"family":248,"subfamily":10,"status":26,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fcredits","Credits",{"path":264,"title":265,"category":247,"order":8,"family":266,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fcurrent-position-resolution","Current position and work history ordering","Understand the data",{"path":268,"title":269,"category":247,"order":24,"family":266,"subfamily":10,"status":26,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fdata-freshness","Data freshness",{"path":271,"title":272,"category":247,"order":15,"family":266,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fdata-quality","Data quality",{"path":274,"title":275,"category":276,"order":277,"family":10,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":278},"\u002Fguides\u002Fendpoint-transition-october-2026","Endpoint transition on October 13, 2026","migrations",1,"Important",{"path":280,"title":281,"category":247,"order":8,"family":252,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fenrich-a-csv-file","Enrich a CSV file",{"path":283,"title":284,"category":247,"order":15,"family":285,"subfamily":10,"status":26,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Ferrors-retries","Error handling & retries","Go to production",{"path":287,"title":288,"category":247,"order":20,"family":25,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Ffirst-api-call","Your first API call",{"path":290,"title":291,"category":247,"order":15,"family":252,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Flists","Lists: orchestrate enrichment",{"path":293,"title":294,"category":7,"order":24,"family":9,"subfamily":10,"status":26,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fmcp","Connect AI agents (MCP)",{"path":296,"title":297,"category":276,"order":298,"family":10,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fmigrating-search-companies-to-organizations","Migrating company search to the new endpoint",2,{"path":300,"title":301,"category":276,"order":302,"family":10,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fmigrating-search-persons-to-people","Migrating people search from persons to people",51,{"path":304,"title":305,"category":247,"order":20,"family":266,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fmissing-and-empty-fields","Missing and empty profile fields",{"path":307,"title":308,"category":247,"order":15,"family":309,"subfamily":10,"status":26,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fpolling","Polling for async results","Async results",{"path":311,"title":312,"category":247,"order":24,"family":285,"subfamily":10,"status":26,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fproduction-checklist","Production checklist",{"path":314,"title":315,"category":247,"order":24,"family":248,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Frate-limits","Rate limits",{"path":317,"title":318,"category":247,"order":24,"family":309,"subfamily":10,"status":26,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fwebhooks","Webhooks",{"path":320,"title":321,"category":247,"order":8,"family":25,"subfamily":10,"status":26,"endpointId":10,"badgeLabel":10},"\u002Fguides\u002Fwhich-endpoint-should-i-use","Which endpoint should I use?",{"path":323,"title":324,"category":325,"order":302,"family":10,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Freference\u002Fareas","Area values","reference",{"path":327,"title":328,"category":325,"order":329,"family":10,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Freference\u002Findustries","Industry values",50,{"path":331,"title":332,"category":333,"order":15,"family":25,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript","TypeScript and JavaScript SDK","sdk",{"path":335,"title":336,"category":333,"order":15,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Fasync-jobs","Async jobs","Guides",{"path":339,"title":340,"category":333,"order":341,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Fbulk","client.bulk",60,"Resources",{"path":344,"title":345,"category":333,"order":346,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Fclient-options","Client options",70,{"path":348,"title":349,"category":333,"order":8,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Fcontact","client.contact",{"path":351,"title":352,"category":333,"order":15,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Fenrich","client.enrich",{"path":354,"title":355,"category":333,"order":329,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Ferrors-and-retries","Errors and retries",{"path":357,"title":358,"category":333,"order":24,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Ffetch","client.fetch",{"path":360,"title":361,"category":333,"order":8,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Ffilter-constants","Filter values as constants",{"path":363,"title":364,"category":333,"order":20,"family":25,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Ffirst-call","First call",{"path":366,"title":367,"category":333,"order":24,"family":25,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Finstall","Install and configure",{"path":369,"title":370,"category":333,"order":346,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Fjobs","client.jobs",{"path":372,"title":373,"category":333,"order":329,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Flists","client.lists",{"path":375,"title":376,"category":333,"order":24,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Flists-and-bulk","Lists and Bulk enrichment",{"path":378,"title":379,"category":333,"order":20,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Fsearch","client.search",{"path":381,"title":382,"category":333,"order":20,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Fsearch-budget","Search within a budget",{"path":384,"title":385,"category":333,"order":341,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Ftimeouts","Timeouts and cancellation",{"path":387,"title":388,"category":333,"order":74,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Fusage","client.usage",{"path":390,"title":391,"category":333,"order":15,"family":392,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fjavascript\u002Fwithout-the-sdk","Without the SDK","More",{"path":394,"title":395,"category":333,"order":15,"family":25,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython","Python SDK",{"path":397,"title":398,"category":333,"order":15,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Fasync-client","Async client",{"path":400,"title":336,"category":333,"order":24,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Fasync-jobs",{"path":402,"title":340,"category":333,"order":341,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Fbulk",{"path":404,"title":345,"category":333,"order":74,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Fclient-options",{"path":406,"title":349,"category":333,"order":8,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Fcontact",{"path":408,"title":352,"category":333,"order":15,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Fenrich",{"path":410,"title":355,"category":333,"order":341,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Ferrors-and-retries",{"path":412,"title":358,"category":333,"order":24,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Ffetch",{"path":414,"title":361,"category":333,"order":329,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Ffilter-constants",{"path":416,"title":364,"category":333,"order":20,"family":25,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Ffirst-call",{"path":418,"title":367,"category":333,"order":24,"family":25,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Finstall",{"path":420,"title":370,"category":333,"order":346,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Fjobs",{"path":422,"title":373,"category":333,"order":329,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Flists",{"path":424,"title":376,"category":333,"order":20,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Flists-and-bulk",{"path":426,"title":379,"category":333,"order":20,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Fsearch",{"path":428,"title":382,"category":333,"order":8,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Fsearch-budget",{"path":430,"title":385,"category":333,"order":346,"family":337,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Ftimeouts",{"path":432,"title":388,"category":333,"order":74,"family":342,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Fusage",{"path":434,"title":391,"category":333,"order":15,"family":392,"subfamily":10,"status":10,"endpointId":10,"badgeLabel":10},"\u002Fsdk\u002Fpython\u002Fwithout-the-sdk",{"path":436,"title":437,"category":438,"order":341,"family":439,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fuse-cases\u002Fbuild-a-list-of-companies","Build a list of companies","use-cases","Build lists",{"path":441,"title":442,"category":438,"order":329,"family":439,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fuse-cases\u002Fbuild-a-list-of-people","Build a list of people",{"path":444,"title":445,"category":438,"order":24,"family":446,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fuse-cases\u002Ffind-a-company","Find a company from a domain or a page URL","Find & enrich",{"path":448,"title":449,"category":438,"order":15,"family":446,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fuse-cases\u002Ffind-a-person","Find a person from an email, a name or a profile URL",{"path":451,"title":452,"category":438,"order":8,"family":51,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fuse-cases\u002Fget-a-work-email-or-phone","Get a work email or a phone number",{"path":454,"title":455,"category":438,"order":277,"family":10,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fuse-cases","Reverse Contact API use cases",{"path":457,"title":458,"category":438,"order":20,"family":446,"subfamily":10,"status":11,"endpointId":10,"badgeLabel":10},"\u002Fuse-cases\u002Fkeep-profiles-fresh","Keep profiles fresh",{"id":460,"title":255,"audience":10,"badgeColor":10,"badgeLabel":10,"body":461,"category":247,"description":1438,"endpointId":10,"extension":1439,"family":252,"lastVerified":1440,"links":10,"meta":1441,"navigation":1442,"order":20,"path":254,"relatedArticles":1443,"requiresFlag":10,"seo":1444,"status":11,"stem":1445,"subfamily":10,"__hash__":1446},"docs\u002Fguides\u002Fbulk-enrichment.md",{"type":462,"value":463,"toc":1414},"minimark",[464,468,479,484,558,561,565,647,650,654,657,712,723,752,756,761,796,827,831,845,871,878,882,891,913,928,932,940,974,983,992,996,1025,1033,1037,1073,1077,1082,1202,1214,1218,1232,1244,1248,1312,1330,1334,1338,1343,1347,1353,1357,1366,1370,1404,1408],[465,466,467],"p",{},"Bulk enrichment looks up a whole file of people in one request. You send up to 25,000 people as JSON, each with a Social profile URL, an email, or a name with its company, and choose what to find for them: the profile, a work email, a phone number. The job runs in the background, and you get one row per person, in the order you sent them, with your own id on each row: read them as they come, or download them as a CSV or NDJSON file.",[465,469,470,471,478],{},"It is the API version of ",[472,473,477],"a",{"href":474,"rel":475},"https:\u002F\u002Fapp.reversecontact.com\u002Fbulk",[476],"nofollow","Bulk Import"," in the app: the same lookups, the same prices, the same CSV.",[480,481,483],"h2",{"id":482},"when-to-use-bulk-enrichment","When to use Bulk enrichment",[485,486,487,500],"table",{},[488,489,490],"thead",{},[491,492,493,497],"tr",{},[494,495,496],"th",{},"You want to",[494,498,499],{},"Use",[501,502,503,516,523,534,547],"tbody",{},[491,504,505,509],{},[506,507,508],"td",{},"Look up one person while a user waits",[506,510,511,513,514],{},[472,512,73],{"href":72}," or ",[472,515,49],{"href":48},[491,517,518,521],{},[506,519,520],{},"Enrich a file or a CRM export once and get it back as CSV",[506,522,29],{},[491,524,525,528],{},[506,526,527],{},"Keep the people, add to them over time, never pay twice for someone",[506,529,530,531],{},"A ",[472,532,533],{"href":290},"List",[491,535,536,543],{},[506,537,538,539],{},"Work on companies, or cap the spend with ",[540,541,542],"code",{},"maxCredits",[506,544,530,545],{},[472,546,533],{"href":290},[491,548,549,552],{},[506,550,551],{},"Enrich a CSV without writing code",[506,553,554,557],{},[472,555,477],{"href":474,"rel":556},[476]," in the app",[465,559,560],{},"Bulk enrichment keeps nothing once you have the file. If you will come back to the same people, to buy their phone numbers next month or to add next week's leads, start with a List instead.",[480,562,564],{"id":563},"how-a-job-runs","How a job runs",[566,567,568,587,617,635],"ol",{},[569,570,571,575,576,578,579,582,583,586],"li",{},[572,573,574],"strong",{},"Start the job"," with ",[472,577,29],{"href":28},", ",[540,580,581],{},"POST \u002Fv2\u002Fenrich\u002Fpersons\u002Fbulk",". It answers ",[540,584,585],{},"202"," at once with the job.",[569,588,589,575,592,578,594,597,598,601,602,513,605,608,609,612,613,616],{},[572,590,591],{},"Follow it",[472,593,98],{"href":97},[540,595,596],{},"GET \u002Fv2\u002Fjobs\u002F:jobId?wait=20",", while its ",[540,599,600],{},"status"," is ",[540,603,604],{},"queued",[540,606,607],{},"running",". Or pass a ",[540,610,611],{},"webhookUrl",": it receives a ",[540,614,615],{},"job.updated"," event when the job settles.",[569,618,619,622,623,578,625,628,629,578,631,634],{},[572,620,621],{},"Get the results",": read them a page at a time while the job runs with ",[472,624,113],{"href":112},[540,626,627],{},"GET \u002Fv2\u002Fjobs\u002F:jobId\u002Frows",", or download them once it settles with ",[472,630,108],{"href":107},[540,632,633],{},"GET \u002Fv2\u002Fjobs\u002F:jobId\u002Fresults",": one row per item, as CSV or NDJSON.",[569,636,637,640,641,643,644,646],{},[572,638,639],{},"Stop it"," if you need to with ",[472,642,103],{"href":102},", and find any past job in the ",[472,645,118],{"href":117},".",[465,648,649],{},"Starting, following, reading the results and cancelling are free. You pay only for what the items find.",[480,651,653],{"id":652},"what-it-costs","What it costs",[465,655,656],{},"Each item costs what its unit call costs, and only for what is found:",[485,658,659,668],{},[488,660,661],{},[491,662,663,666],{},[494,664,665],{},"What the item looks up",[494,667,262],{},[501,669,670,681,689,702],{},[491,671,672,675],{},[506,673,674],{},"Profile, from a Social profile URL",[506,676,677,678],{},"1, or 2 with ",[540,679,680],{},"live: true",[491,682,683,686],{},[506,684,685],{},"Profile, from an email or a name",[506,687,688],{},"2",[491,690,691,696],{},[506,692,693],{},[540,694,695],{},"contact_email",[506,697,698,699],{},"3 for a professional email, 5 for a personal one, 8 for both with ",[540,700,701],{},"emailType: \"any\"",[491,703,704,709],{},[506,705,706],{},[540,707,708],{},"contact_phone",[506,710,711],{},"20 per phone number found",[465,713,714,715,718,719,722],{},"When the job starts, it reserves the most each item can cost, in the order you sent them, as long as your balance covers it. An item the balance no longer covers is not run: its row reads ",[540,716,717],{},"insufficient_credits",", it costs nothing, and ",[540,720,721],{},"notRunForCredits"," counts it, while a later item that costs less can still run. When the job settles, what an item did not find is given back, so you pay only for what was found.",[724,725,726,733,736,744],"ul",{},[569,727,728,729,732],{},"An item that names the same person as an earlier one is looked up once: its row reads ",[540,730,731],{},"duplicate"," and costs nothing.",[569,734,735],{},"The email and phone finders start from a Social profile URL, or from a first name, a last name and a company domain. Any other item first has its profile matched, charged like a profile lookup when it is found.",[569,737,738,739,743],{},"On a Go, Plus or Max plan, a profile your plan covers costs no credit, as in its unit call. Once the workspace has delivered its ",[472,740,742],{"href":741},"\u002Fguides\u002Frate-limits#daily-profile-cap-of-the-go-plus-and-max-plans","daily profile cap",", the items of the job wait until 00:00 UTC instead of being refused.",[569,745,746,747,751],{},"A key with ",[472,748,750],{"href":749},"\u002Fguides\u002Fapi-key-management#_4-set-credit-limits-optional","credit limits"," must hold the whole reservation, and counts only what the job spent once it settles.",[480,753,755],{"id":754},"step-by-step","Step by step",[757,758,760],"h3",{"id":759},"_1-prepare-the-items","1. Prepare the items",[465,762,763,764,767,768,771,772,775,776,779,780,783,784,787,788,791,792,795],{},"Each item takes a ",[540,765,766],{},"linkedinUrl",", an ",[540,769,770],{},"email",", or a ",[540,773,774],{},"firstName"," and ",[540,777,778],{},"lastName"," with a ",[540,781,782],{},"companyDomain"," (or a ",[540,785,786],{},"companyName"," when you have no domain). Add ",[540,789,790],{},"externalId",", the id of the line in your CRM or file: it comes back on the row of the item. An item with no field at all is not run and reads ",[540,793,794],{},"skipped",", and an item that holds only a company is looked up but rarely matches anyone.",[465,797,798,799,802,803,806,807,578,809,811,812,578,814,817,818,806,821,513,824,646],{},"Then choose ",[540,800,801],{},"families",": ",[540,804,805],{},"profile"," (the default), ",[540,808,695],{},[540,810,708],{},", or several. With ",[540,813,695],{},[540,815,816],{},"emailType"," picks ",[540,819,820],{},"professional",[540,822,823],{},"personal",[540,825,826],{},"any",[757,828,830],{"id":829},"_2-start-the-job","2. Start the job",[832,833,834],"code-group",{"title":581},[835,836,843],"pre",{"className":837,"code":839,"filename":840,"language":841,"meta":842},[838],"language-bash","curl -X POST https:\u002F\u002Fapi.reversecontact.com\u002Fv2\u002Fenrich\u002Fpersons\u002Fbulk \\\n  -H \"Authorization: Bearer $RC_API_KEY\" \\\n  -H \"Content-Type: application\u002Fjson\" \\\n  -H \"Idempotency-Key: 9e2f4a1c-6b3d-4e7f-8a5c-2d1b0e9f8a7c\" \\\n  -d '{\n    \"name\": \"CRM export, November\",\n    \"items\": [\n      { \"linkedinUrl\": \"https:\u002F\u002Fwww.social.com\u002Fin\u002Fjanedoe\", \"externalId\": \"crm-001\" },\n      { \"firstName\": \"John\", \"lastName\": \"Smith\", \"companyDomain\": \"acme.com\", \"externalId\": \"crm-002\" }\n    ],\n    \"families\": [\"profile\", \"contact_email\"]\n  }'\n","cURL","bash","",[540,844,839],{"__ignoreMap":842},[465,846,847,848,851,852,855,856,859,860,863,864,867,868,870],{},"The answer gives the job in ",[540,849,850],{},"data.job",": keep its ",[540,853,854],{},"id"," (",[540,857,858],{},"$JOB_ID"," in the commands below). ",[540,861,862],{},"creditsEstimated"," is what the job reserved, ",[540,865,866],{},"duplicateCount"," the items looked up once, and ",[540,869,721],{}," the items your balance did not cover.",[465,872,873,874,877],{},"Send an ",[540,875,876],{},"Idempotency-Key"," you choose for the job. If the answer gets lost, send the same request with the same key: for 24 hours, it returns the job it created instead of reserving credits for a second one.",[757,879,881],{"id":880},"_3-follow-the-job","3. Follow the job",[832,883,885],{"title":884},"GET \u002Fv2\u002Fjobs\u002F:jobId",[835,886,889],{"className":887,"code":888,"filename":840,"language":841,"meta":842},[838],"curl \"https:\u002F\u002Fapi.reversecontact.com\u002Fv2\u002Fjobs\u002F$JOB_ID?wait=20\" \\\n  -H \"Authorization: Bearer $RC_API_KEY\"\n",[540,890,888],{"__ignoreMap":842},[465,892,893,894,897,898,601,900,513,902,904,905,908,909,912],{},"With ",[540,895,896],{},"wait=20",", each read waits up to 20 seconds for the job to settle. Read it again while ",[540,899,600],{},[540,901,604],{},[540,903,607],{},", with an HTTP timeout above 20 seconds. These reads are free, also at a zero balance, and never counted against your rate limits. ",[540,906,907],{},"progress"," counts the items done, and ",[540,910,911],{},"credits.used"," is set once the job settles.",[465,914,915,916,918,919,921,922,775,925,927],{},"Instead of reading, you can pass a public HTTPS ",[540,917,611],{}," when you start the job: it receives one ",[540,920,615],{}," event when the job completes, is cancelled or fails, with the path of the results. A failed delivery is tried again for about 3 hours, so the same event can arrive twice: key it on ",[540,923,924],{},"jobId",[540,926,600],{},". Read the job if the event has not arrived.",[757,929,931],{"id":930},"_4-download-the-results","4. Download the results",[832,933,934],{"title":633},[835,935,938],{"className":936,"code":937,"filename":840,"language":841,"meta":842},[838],"curl -o results.csv \"https:\u002F\u002Fapi.reversecontact.com\u002Fv2\u002Fjobs\u002F$JOB_ID\u002Fresults\" \\\n  -H \"Authorization: Bearer $RC_API_KEY\"\n",[540,939,937],{"__ignoreMap":842},[465,941,942,943,513,946,802,949,952,953,955,956,578,959,962,963,966,967,970,971,973],{},"The file is ready once the job is ",[540,944,945],{},"completed",[540,947,948],{},"cancelled",[540,950,951],{},"links.results"," of the job is set then. It holds one row per item, in the order you sent them: your fields and ",[540,954,790],{}," first, then ",[540,957,958],{},"rc_status",[540,960,961],{},"rc_message",", and the columns of what you asked for, such as ",[540,964,965],{},"rc_email"," or the ",[540,968,969],{},"rc_"," profile columns. See ",[472,972,108],{"href":107}," for every column. The file is UTF-8 with a byte order mark, so a spreadsheet opens accented names correctly.",[465,975,976,977,980,981,646],{},"For a program, add ",[540,978,979],{},"format=ndjson",": the file then holds one JSON object per item, with the person in the shape of ",[472,982,73],{"href":72},[832,984,986],{"title":985},"GET \u002Fv2\u002Fjobs\u002F:jobId\u002Fresults?format=ndjson",[835,987,990],{"className":988,"code":989,"filename":840,"language":841,"meta":842},[838],"curl -o results.ndjson \"https:\u002F\u002Fapi.reversecontact.com\u002Fv2\u002Fjobs\u002F$JOB_ID\u002Fresults?format=ndjson\" \\\n  -H \"Authorization: Bearer $RC_API_KEY\"\n",[540,991,989],{"__ignoreMap":842},[757,993,995],{"id":994},"or-read-the-results-as-they-come","Or read the results as they come",[465,997,998,999,1001,1002,1005,1006,1009,1010,1013,1014,1017,1018,1021,1022,1024],{},"You do not have to wait for the job to settle: ",[472,1000,113],{"href":112}," returns the same JSON objects, up to 100 per page, in the order sent, from the start of the run. Pass ",[540,1003,1004],{},"nextCursor"," back as ",[540,1007,1008],{},"cursor"," until it is ",[540,1011,1012],{},"null",". While the next item still runs, the page is empty: read the same cursor again after the ",[540,1015,1016],{},"Retry-After"," seconds. Each page counts toward your rate limits, and the items of a running job already take up to 80% of your per-minute limit: read with ",[540,1019,1020],{},"limit=100",", at the ",[540,1023,1016],{}," pace.",[832,1026,1027],{"title":627},[835,1028,1031],{"className":1029,"code":1030,"filename":840,"language":841,"meta":842},[838],"curl \"https:\u002F\u002Fapi.reversecontact.com\u002Fv2\u002Fjobs\u002F$JOB_ID\u002Frows?limit=100\" \\\n  -H \"Authorization: Bearer $RC_API_KEY\"\n# The next page: pass back data.nextCursor of the previous one.\ncurl \"https:\u002F\u002Fapi.reversecontact.com\u002Fv2\u002Fjobs\u002F$JOB_ID\u002Frows?limit=100&cursor=$NEXT_CURSOR\" \\\n  -H \"Authorization: Bearer $RC_API_KEY\"\n",[540,1032,1030],{"__ignoreMap":842},[480,1034,1036],{"id":1035},"the-complete-pipeline","The complete pipeline",[832,1038,1040,1049,1058,1067],{"title":1039},"Start, follow, download",[835,1041,1047],{"className":1042,"code":1044,"filename":1045,"language":1046,"meta":842},[1043],"language-javascript","import { writeFile } from \"node:fs\u002Fpromises\";\n\nconst BASE = \"https:\u002F\u002Fapi.reversecontact.com\";\nconst headers = { \"Authorization\": `Bearer ${process.env.RC_API_KEY}` };\n\n\u002F\u002F 1. Start the job: keep the Idempotency-Key to retry safely\nconst created = await fetch(`${BASE}\u002Fv2\u002Fenrich\u002Fpersons\u002Fbulk`, {\n  method: \"POST\",\n  headers: { ...headers, \"Content-Type\": \"application\u002Fjson\", \"Idempotency-Key\": crypto.randomUUID() },\n  body: JSON.stringify({\n    name: \"CRM export, November\",\n    items: [\n      { linkedinUrl: \"https:\u002F\u002Fwww.social.com\u002Fin\u002Fjanedoe\", externalId: \"crm-001\" },\n      { firstName: \"John\", lastName: \"Smith\", companyDomain: \"acme.com\", externalId: \"crm-002\" }\n    ],\n    families: [\"profile\", \"contact_email\"]\n  })\n});\nlet { data: { job } } = await created.json();\n\n\u002F\u002F 2. Follow it while it is queued or running\nwhile (job.status === \"queued\" || job.status === \"running\") {\n  const response = await fetch(`${BASE}${job.links.self}?wait=20`, { headers });\n  job = (await response.json()).data;\n}\n\n\u002F\u002F 3. Download the results: write the bytes, byte order mark included\nif (job.links.results) {\n  const response = await fetch(`${BASE}${job.links.results}`, { headers });\n  await writeFile(\"results.csv\", Buffer.from(await response.arrayBuffer()));\n}\nconsole.log(job.status, `${job.credits.used} credits`);\n","JavaScript","javascript",[540,1048,1044],{"__ignoreMap":842},[835,1050,1056],{"className":1051,"code":1053,"filename":1054,"language":1055,"meta":842},[1052],"language-python","import os\nimport uuid\n\nimport requests\n\nBASE = \"https:\u002F\u002Fapi.reversecontact.com\"\nheaders = {\"Authorization\": f\"Bearer {os.environ['RC_API_KEY']}\"}\n\n# 1. Start the job: keep the Idempotency-Key to retry safely\njob = requests.post(\n    f\"{BASE}\u002Fv2\u002Fenrich\u002Fpersons\u002Fbulk\",\n    headers={**headers, \"Idempotency-Key\": str(uuid.uuid4())},\n    json={\n        \"name\": \"CRM export, November\",\n        \"items\": [\n            {\"linkedinUrl\": \"https:\u002F\u002Fwww.social.com\u002Fin\u002Fjanedoe\", \"externalId\": \"crm-001\"},\n            {\"firstName\": \"John\", \"lastName\": \"Smith\", \"companyDomain\": \"acme.com\", \"externalId\": \"crm-002\"},\n        ],\n        \"families\": [\"profile\", \"contact_email\"],\n    },\n).json()[\"data\"][\"job\"]\n\n# 2. Follow it while it is queued or running\nwhile job[\"status\"] in (\"queued\", \"running\"):\n    job = requests.get(\n        f\"{BASE}{job['links']['self']}\", headers=headers, params={\"wait\": 20}, timeout=30\n    ).json()[\"data\"]\n\n# 3. Download the results\nif job[\"links\"][\"results\"]:\n    with open(\"results.csv\", \"wb\") as file:\n        file.write(requests.get(f\"{BASE}{job['links']['results']}\", headers=headers).content)\nprint(job[\"status\"], job[\"credits\"][\"used\"], \"credits\")\n","Python","python",[540,1057,1053],{"__ignoreMap":842},[835,1059,1065],{"className":1060,"code":1062,"filename":1063,"language":1064,"meta":842},[1061],"language-typescript","import { writeFile } from \"node:fs\u002Fpromises\";\nimport ReverseContact from \"@reverse-contact\u002Fsdk\";\n\nconst client = new ReverseContact({ apiKey: process.env.RC_API_KEY });\n\n\u002F\u002F 1. Start the job: the SDK sends an Idempotency-Key and reuses it on its retries\nconst created = await client.bulk.enrichPersons({\n  name: \"CRM export, November\",\n  items: [\n    { linkedinUrl: \"https:\u002F\u002Fwww.social.com\u002Fin\u002Fjanedoe\", externalId: \"crm-001\" },\n    { firstName: \"John\", lastName: \"Smith\", companyDomain: \"acme.com\", externalId: \"crm-002\" }\n  ],\n  families: [\"profile\", \"contact_email\"]\n});\nconst jobId = created.data.job.id;\n\n\u002F\u002F 2. Follow it until it no longer moves\nconst job = await client.bulk.wait(jobId);\n\n\u002F\u002F 3. Download the results: bulk.results returns the text without its byte order mark,\n\u002F\u002F so write \"\\uFEFF\" before it for a spreadsheet to open accented names correctly\nif (job.data.links.results) {\n  await writeFile(\"results.csv\", \"\\uFEFF\" + (await client.bulk.results(jobId)));\n}\nconsole.log(job.data.status, \"credits:\", job.data.credits.used);\n","TypeScript SDK","typescript",[540,1066,1062],{"__ignoreMap":842},[835,1068,1071],{"className":1069,"code":1070,"filename":395,"language":1055,"meta":842},[1052],"import os\n\nfrom reversecontact import ReverseContact\n\nwith ReverseContact(api_key=os.environ[\"RC_API_KEY\"]) as client:\n    # 1. Start the job: the SDK sends an Idempotency-Key and reuses it on its retries\n    created = client.bulk.enrich_persons(\n        name=\"CRM export, November\",\n        items=[\n            {\"linkedinUrl\": \"https:\u002F\u002Fwww.social.com\u002Fin\u002Fjanedoe\", \"externalId\": \"crm-001\"},\n            {\"firstName\": \"John\", \"lastName\": \"Smith\", \"companyDomain\": \"acme.com\", \"externalId\": \"crm-002\"},\n        ],\n        families=[\"profile\", \"contact_email\"],\n    )\n    job_id = created.data.job.id\n\n    # 2. Follow it until it no longer moves\n    job = client.bulk.wait(job_id)\n\n    # 3. Download the results\n    if job.data.links.results:\n        with open(\"results.csv\", \"w\", encoding=\"utf-8\") as file:\n            file.write(client.bulk.results(job_id))\n    print(job.data.status, \"credits:\", job.data.credits.used)\n",[540,1072,1070],{"__ignoreMap":842},[480,1074,1076],{"id":1075},"handle-the-results","Handle the results",[465,1078,1079,1081],{},[540,1080,958],{}," says what happened to each row, and what to do with it:",[485,1083,1084,1095],{},[488,1085,1086],{},[491,1087,1088,1092],{},[494,1089,1090],{},[540,1091,958],{},[494,1093,1094],{},"What to do",[501,1096,1097,1113,1123,1132,1141,1154,1163,1173,1183,1193],{},[491,1098,1099,1107],{},[506,1100,1101,578,1104],{},[540,1102,1103],{},"enriched",[540,1105,1106],{},"partial",[506,1108,1109,1110,1112],{},"Use the row. ",[540,1111,1106],{}," found part of what you asked, such as the profile but no email",[491,1114,1115,1120],{},[506,1116,1117],{},[540,1118,1119],{},"not_found",[506,1121,1122],{},"Nothing to retry: only a profile matched on the way to a finder was charged",[491,1124,1125,1129],{},[506,1126,1127],{},[540,1128,731],{},[506,1130,1131],{},"Read the row of the earlier item that names the same person",[491,1133,1134,1138],{},[506,1135,1136],{},[540,1137,717],{},[506,1139,1140],{},"Top up, then send these items again in a new job",[491,1142,1143,1151],{},[506,1144,1145,578,1148],{},[540,1146,1147],{},"rate_limited",[540,1149,1150],{},"error",[506,1152,1153],{},"Send these items again later: they cost nothing",[491,1155,1156,1160],{},[506,1157,1158],{},[540,1159,794],{},[506,1161,1162],{},"Not run: the item had nothing to look up, or the job was cancelled before it. Complete the item, or send it again",[491,1164,1165,1170],{},[506,1166,1167],{},[540,1168,1169],{},"invalid_input",[506,1171,1172],{},"Fix the item, such as an invalid Social profile URL, then send it again",[491,1174,1175,1180],{},[506,1176,1177],{},[540,1178,1179],{},"data_subject_blocked",[506,1181,1182],{},"Drop the person: they asked not to be processed under GDPR or CCPA",[491,1184,1185,1190],{},[506,1186,1187],{},[540,1188,1189],{},"unknown",[506,1191,1192],{},"The lookup may have run but its result was not saved. It is not run again on its own",[491,1194,1195,1199],{},[506,1196,1197],{},[540,1198,607],{},[506,1200,1201],{},"Only in the file of a cancelled job: the item was still running. It ends within the hour: download the file again for its outcome",[465,1203,1204,1205,1207,1208,1210,1211,1213],{},"To retry, filter the rows by ",[540,1206,958],{}," and send their items in a new job, with a new ",[540,1209,876],{},". ",[540,1212,790],{}," ties each new row back to your file.",[480,1215,1217],{"id":1216},"cancel-a-job-and-read-the-history","Cancel a job and read the history",[465,1219,1220,1222,1223,1225,1226,1228,1229,1231],{},[472,1221,103],{"href":102}," stops a job an API key or an AI assistant started: items already in flight may finish and are charged as usual, and items not started are never charged and read ",[540,1224,794],{},". The results of the items done stay downloadable. An item in flight ends within the hour: until then, its row of the file reads ",[540,1227,607],{},", and a page of ",[472,1230,113],{"href":112}," waits for it. A job started by a person in the app or with Ask is stopped there.",[465,1233,1234,1235,1237,1238,578,1241,1243],{},"The ",[472,1236,118],{"href":117}," lists every job of your workspace, newest first, whoever started it: your Bulk enrichment jobs, the files enriched with Bulk Import in the app, the imports and enrichments of your Lists, and the Search exports. Filter it by ",[540,1239,1240],{},"type",[540,1242,600],{}," or List.",[480,1245,1247],{"id":1246},"limits","Limits",[485,1249,1250,1260],{},[488,1251,1252],{},[491,1253,1254,1257],{},[494,1255,1256],{},"Limit",[494,1258,1259],{},"Value",[501,1261,1262,1270,1281,1288,1296,1304],{},[491,1263,1264,1267],{},[506,1265,1266],{},"Items per request",[506,1268,1269],{},"25,000",[491,1271,1272,1275],{},[506,1273,1274],{},"Request body",[506,1276,1277,1278],{},"25 MB of JSON, above it ",[540,1279,1280],{},"413 REQUEST_BODY_TOO_LARGE",[491,1282,1283,1285],{},[506,1284,315],{},[506,1286,1287],{},"Starting a job counts as one request, whatever its number of items. Its items then take at most 80% of your per-minute limit as they run, and wait when that share is taken",[491,1289,1290,1293],{},[506,1291,1292],{},"Following a job",[506,1294,1295],{},"Free and never counted against your rate limits",[491,1297,1298,1301],{},[506,1299,1300],{},"Downloading the results",[506,1302,1303],{},"Free, counted like any other call",[491,1305,1306,1309],{},[506,1307,1308],{},"Reading the results by page",[506,1310,1311],{},"Up to 100 items and 2 MB of JSON per page. Free, each page counted like any other call",[465,1313,1314,1315,1317,1318,1320,1321,775,1323,1325,1326,1329],{},"A larger file goes in several jobs. The API key needs the permission of what the job asks for: Person Enrichment when ",[540,1316,801],{}," includes ",[540,1319,805],{}," (the default), Contact for ",[540,1322,695],{},[540,1324,708],{},". See ",[472,1327,315],{"href":1328},"\u002Fguides\u002Frate-limits#how-requests-are-counted"," for how a job shares the per-minute limit with your other calls.",[480,1331,1333],{"id":1332},"faq","FAQ",[757,1335,1337],{"id":1336},"how-many-people-can-i-enrich-in-one-bulk-enrichment-request","How many people can I enrich in one Bulk enrichment request?",[465,1339,1340,1342],{},[540,1341,581],{}," takes up to 25,000 people per request, in a JSON body of at most 25 MB. Each person is found best from a Social profile URL, an email, or a first and last name with a company. Split a larger file into several jobs.",[757,1344,1346],{"id":1345},"how-much-does-reverse-contact-bulk-enrichment-cost","How much does Reverse Contact Bulk enrichment cost?",[465,1348,1349,1350,1352],{},"Each person costs what its unit call costs, only for what is found: 1 credit for a profile from a Social profile URL (2 with ",[540,1351,680],{},"), 2 from an email or a name, 3 for a professional email, 5 for a personal one and 20 for a phone number. The job reserves the most each person can cost when it starts and gives back what was not found. Starting, following, downloading and cancelling a job are free.",[757,1354,1356],{"id":1355},"what-happens-when-my-balance-does-not-cover-every-person-of-a-bulk-enrichment-job","What happens when my balance does not cover every person of a Bulk enrichment job?",[465,1358,1359,1360,1362,1363,1365],{},"The job reserves credits person by person, in the order you sent them, as long as your balance covers them, and does not run the people it no longer covers: their rows read ",[540,1361,717],{}," in the results and cost nothing, and ",[540,1364,721],{}," counts them. Top up, then send those people again in a new job.",[757,1367,1369],{"id":1368},"how-do-i-know-when-a-bulk-enrichment-job-is-finished","How do I know when a Bulk enrichment job is finished?",[465,1371,1372,1373,1375,1376,601,1378,513,1380,1382,1383,601,1385,578,1387,513,1389,1392,1393,1395,1396,1398,1399,1401,1402,646],{},"Read ",[540,1374,596],{}," while ",[540,1377,600],{},[540,1379,604],{},[540,1381,607],{},": each read waits up to 20 seconds and is free. The job is finished when ",[540,1384,600],{},[540,1386,945],{},[540,1388,948],{},[540,1390,1391],{},"failed",". You can also pass a public HTTPS ",[540,1394,611],{}," when you start the job: it receives a ",[540,1397,615],{}," event once the job settles. The results file, CSV or NDJSON, is then at ",[540,1400,633],{},". To use the results before the job finishes, read them a page at a time with ",[540,1403,627],{},[757,1405,1407],{"id":1406},"should-i-use-bulk-enrichment-or-a-list","Should I use Bulk enrichment or a List?",[465,1409,1410,1411,1413],{},"Use Bulk enrichment to enrich a file of people once and get it back as CSV: nothing is kept. Use a List to keep people or companies in your workspace, add to them over time, buy their data later and never pay twice for someone already on the List, with a ",[540,1412,542],{}," cap on each import.",{"title":842,"searchDepth":1415,"depth":1415,"links":1416},3,[1417,1418,1419,1420,1427,1428,1429,1430,1431],{"id":482,"depth":298,"text":483},{"id":563,"depth":298,"text":564},{"id":652,"depth":298,"text":653},{"id":754,"depth":298,"text":755,"children":1421},[1422,1423,1424,1425,1426],{"id":759,"depth":1415,"text":760},{"id":829,"depth":1415,"text":830},{"id":880,"depth":1415,"text":881},{"id":930,"depth":1415,"text":931},{"id":994,"depth":1415,"text":995},{"id":1035,"depth":298,"text":1036},{"id":1075,"depth":298,"text":1076},{"id":1216,"depth":298,"text":1217},{"id":1246,"depth":298,"text":1247},{"id":1332,"depth":298,"text":1333,"children":1432},[1433,1434,1435,1436,1437],{"id":1336,"depth":1415,"text":1337},{"id":1345,"depth":1415,"text":1346},{"id":1355,"depth":1415,"text":1356},{"id":1368,"depth":1415,"text":1369},{"id":1406,"depth":1415,"text":1407},"Enrich up to 25,000 people in one request, follow the job, then read the results as they come or download one row per person as CSV or NDJSON.","md","2026-11-04",{},true,"\u002Fdocs\u002Fendpoints\u002Fbulk-enrich-persons,\u002Fdocs\u002Fendpoints\u002Fjob,\u002Fdocs\u002Fendpoints\u002Fjob-results,\u002Fdocs\u002Fendpoints\u002Fjob-rows,\u002Fdocs\u002Fguides\u002Flists,\u002Fdocs\u002Fguides\u002Fenrich-a-csv-file",{"title":255,"description":1438},"guides\u002Fbulk-enrichment","ycHlIBSVcar_KaQXXJRdAZPS9gjdeBPDx1qfcn53jDk",1793830203215]