B2B Company Identity & CRM Enrichment
Pricing
$4.00 / 1,000 verified crm-to-lei matches
B2B Company Identity & CRM Enrichment
Match company-only CRM records to official GLEIF LEIs, with confidence scores, source links, and a manual-review queue for ambiguous identities. Independent tool; not affiliated with or endorsed by GLEIF. Not credit-risk or full ownership verification.
Pricing
$4.00 / 1,000 verified crm-to-lei matches
Rating
0.0
(0)
Developer
AFK Digital
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Reconcile company-only CRM rows with official LEI identities. Built for B2B sales, finance, vendor onboarding, and procurement data quality.
This is an independent software service using public GLEIF LEI data. It is NOT provided, authorized, supported, sponsored, or endorsed by GLEIF.
Features
- Accept a customer-authorized CSV/JSON file uploaded to Apify, or company-only JSON rows.
- Resolve existing LEIs or search official GLEIF legal entity data by company name and country.
- Compare legal names, common suffix variants, legal-address country, and optional business-address evidence.
- Send uncertain cases to a separate manual review queue instead of claiming an exact match.
- Return CRM row ID, candidate LEI, official legal name, country, jurisdiction, registration/entity status, confidence score, match method, and official source URL.
- Optionally include GLEIF-reported direct/ultimate consolidated parent LEIs and direct child LEIs.
- Never claim a credit-risk assessment or complete beneficial-ownership determination.
Input
Supply exactly one source: fileUrl OR records.
For fileUrl, upload a UTF-8 CSV or JSON using Apify's file-upload input widget. The Actor accepts only an authorized direct HTTPS Apify key-value-store record URL under api.apify.com, not arbitrary download URLs. Max file size: 2 MB.
For records, pass a JSON array of company-only objects. Examples are in the examples directory.
Allowed company-only columns: rowId, companyName, country, address, lei. Common capitalization and CRM column aliases are accepted in uploads. Company name or LEI is mandatory; row ID is generated when absent.
Do NOT include email, phone, personal contact names, tax IDs, or unrelated CRM fields. Unexpected columns cause a validation error. Country uses ISO-3166 alpha-2; UK is normalized to GB.
matchThreshold: 0.80–0.99, default 0.93. This heuristic score is not a statistical probability.
resultLimit: process 1–250 rows, default 100; submitted file max 500 rows.
includeRelationships: false by default; enabling it requests additional official GLEIF relationship resources. The direct-child list is capped at 10.
Results
The default dataset produces exactly one result for each processed CRM row:
- matched: unique, above-threshold LEI identity accepted, with no detected conflicting evidence.
- review: plausible but ambiguous; competitor within the confidence gap, truncated search, weak name evidence, or address/country conflict.
- not_found: no LEI candidate, no official LEI found, or insufficient name evidence.
- invalid_row: invalid LEI check digits (no API call).
- api_error: official API/network error (no successful match).
The REVIEW_QUEUE key-value record includes review rows with their top candidate LEIs, names, scores, and reasons. The SUMMARY key-value record contains only aggregate counts. Link outputs are declared in the Apify output schema.
Verified sample output
These sample entries were taken from a real successful Apify cloud run (dataset HiiXnW7E0WNpqZb3R). All input rows are preserved, whether matched or not.
| CRM row | Result | Official candidate | LEI | Confidence |
|---|---|---|---|---|
| DEMO-001 | matched | Apple Inc. | HWUPKR0MPOU8FGXBT394 | 0.995 |
| DEMO-002 | review (ambiguous) | BLUE HORIZON | 969500JULJOR90MKFC51 | 0.970 |
| DEMO-003 | not_found | none | none | 0.000 |
| DEMO-004 | matched | Apple Inc. | HWUPKR0MPOU8FGXBT394 | 1.000 |
For the complete machine-readable dataset example, see examples/sample_output.json in the Actor source package. The review candidate is not a verified match and must be checked by a person. Source records may change as GLEIF updates its public LEI data.
The confidence score is a transparent rule-based matching aid, not proof that the entity is your contracting counterparty. Even matching LEIs can be expired/lapsed or refer to inactive entities; always inspect registrationStatus and entityStatus.
Country filtering uses the official GLEIF legal-address-country field, while jurisdiction is reported separately. Address comparison occurs locally; only company name/country or a given LEI are transmitted to GLEIF.
GLEIF limits and source integrity
Official GLEIF LEI API: https://www.gleif.org/en/lei-data/gleif-api
GLEIF data terms / CC0: https://www.gleif.org/en/meta/lei-data-terms-of-use
GLEIF provides free public LEI data under CC0, but its service and trademarks have separate conditions. Do not imply GLEIF endorsement or association. The data is provided AS IS and can be incomplete, stale, or inaccurate.
The Actor sends requests only to the official api.gleif.org /api/v1/lei-records resources. It performs sequential requests at most approximately once per second, with bounded retries on HTTP 429 and 5xx. Retry-After is respected; for excessive back-off it fails safely instead of evading restrictions. Search checks at most two pages of 50 records per row; a truncated search is always routed to review. No scraping, proxy rotation, or authentication bypass.
Relationships are specifically reported LEI accounting-consolidation relationships; they neither verify all beneficial owners nor establish the entire corporate structure. Missing relationship endpoints may mean unavailable reporting, not no ownership.
Privacy
This Actor needs only the company identity fields listed above. It does not intentionally read, log, return, or transmit person-level CRM fields. Files uploaded into Apify storage and output datasets remain subject to the user's Apify storage settings and retention policies. Do not place secret tokens or personally identifying contact data in company columns.
Fair pay-per-event billing
The only custom billable event is successful-match. The code calls Actor.charge once per matched input row, and ONLY AFTER its result has been saved to the dataset. Review, not_found, invalid_row and api_error rows do not invoke Actor.charge.
On free/private runs the SDK detects that pay-per-event is not active and creates no custom charges. As soon as Apify reports the correct sole PPE event, charging activates automatically; any unexpected event or price exceeding $0.004 fails closed.
Mandatory Apify Console setup before paid Store publication:
- Choose Pay per event; create the custom event named successful-match and set its price and primary-event designation.
- REMOVE or DISABLE BOTH synthetic events: apify-actor-start and apify-default-dataset-item. Their automatic charges would violate the promise of no fees on failed/unmatched rows.
- Keep Pay per event + usage switched OFF. Otherwise runtime usage can produce fees even without matching rows.
- Confirm marketplace permissions, publisher payout setup and current Store terms.
- The SDK automatically enables custom-event billing only if the platform's event list contains exactly successful-match, at a positive effective event price not exceeding $0.004; no environment toggle is necessary.
- Verify with live Apify runs (matched, review, no result, API failure, and zero-result run) and confirm itemized charges in the Console.
This is a charge for our matching/processing service, not sale of exclusive rights in the underlying CC0 GLEIF records. The proposed competitive price is $0.004 per accepted CRM row (USD $4.00 per 1,000 matches). The Store price remains unconfigured until the monetization settings are saved in Apify.
Official monetization documentation: https://docs.apify.com/actors/publishing/monetize/pay-per-event https://docs.apify.com/actors/monetize/set-up-monetization
Reproducible local tests
From /opt/APIFY/API25, use:
python3 -m venv .venv.venv/bin/pip install -r requirements.txt.venv/bin/python -m unittest discover -s tests -p 'test_*.py' -v.venv/bin/python -m tests.live_checks
The first command sequence runs offline unit tests; the second touches only the official GLEIF API and writes reports/live_test_report.json.
See examples/run_input.json for an Apify-compatible example input and examples/demo_companies.csv for an upload sample. Container entrypoint: python -m src.main. Dockerfile and Apify Actor input, dataset and output schemas are in .actor/.
Intended use boundaries
Results support CRM identity reconciliation, not credit risk, sanctions screening, guaranteed KYC, verification of all subsidiaries, or ownership proof. Human review of ambiguous company names is required. This service is independent of GLEIF.