Integrationsmönster
Verkliga integrationsexempel för vanliga användningsfall med FöretagsAPI.
Dessa integrationsmönster visar hur du använder FöretagsAPI i vanliga affärsscenarier. Varje mönster inkluderar kompletta, produktionsklara kodexempel som du kan anpassa för dina specifika behov.
Kundregistrering
Verifiera företagsinformation vid kundregistrering. Detta mönster säkerställer att organisationsnumret är giltigt, att företaget existerar och är aktivt.
KYC-efterlevnad
123456789101112131415161718192021222324252627282930313233343536373839404142434445// Customer Onboarding - Verify company during registration
async function verifyCompanyRegistration(orgNumber) {
const response = await fetch('https://data.foretagsapi.se/v1/search', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({ org_number: orgNumber })
});
const data = await response.json();
if (data.companies && data.companies.length > 0) {
const company = data.companies[0];
return {
valid: true,
companyName: company.name,
legalForm: company.legalForm,
isActive: company.deregistrationDate === null,
registrationDate: company.registrationDate
};
}
return { valid: false, error: 'Company not found' };
}
// Usage in registration flow
async function handleRegistration(formData) {
const verification = await verifyCompanyRegistration(formData.orgNumber);
if (!verification.valid) {
throw new Error('Invalid organization number');
}
if (!verification.isActive) {
throw new Error('Company has been deregistered');
}
// Proceed with registration using verified company data
return createAccount({
...formData,
verifiedCompanyName: verification.companyName
});
}
Viktiga verifieringskontroller
- • Giltigt org.nummer: Företaget finns i registret
- • Aktiv status: Företaget är inte avregistrerat
- • Registreringsdatum: Kontrollera företagets ålder för riskbedömning
Lead-anrikning
Berika CRM-leads och prospekts automatiskt med verifierad företagsinformation. Hitta företag även när leadet bara innehåller ett företagsnamn.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869// CRM Lead Enrichment - Automatically enrich leads with company data
async function enrichLead(lead) {
// Search by company name from lead
const response = await fetch('https://data.foretagsapi.se/v1/search', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({ q: lead.companyName })
});
const data = await response.json();
if (data.companies && data.companies.length > 0) {
// Use the best match (highest score)
const company = data.companies[0];
return {
...lead,
enriched: true,
enrichedAt: new Date().toISOString(),
companyData: {
orgNumber: company.orgNumber,
verifiedName: company.name,
address: {
street: company.postalAddress.street,
city: company.postalAddress.city,
postalCode: company.postalAddress.postalCode
},
industry: company.sniCodes.sni1,
businessDescription: company.businessDescription,
registrationDate: company.registrationDate,
matchScore: company.score
}
};
}
return { ...lead, enriched: false };
}
// Batch enrich multiple leads
async function enrichLeads(leads) {
// Use bulk endpoint for efficiency
const response = await fetch('https://data.foretagsapi.se/v1/bulk', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
names: leads.map(l => l.companyName)
})
});
const data = await response.json();
return leads.map((lead, index) => {
const result = data.results[index];
if (result.success) {
return {
...lead,
enriched: true,
companyData: result.company
};
}
return { ...lead, enriched: false };
});
}
Data du kan berika med
- • Officiellt företagsnamn
- • Organisationsnummer
- • Postadress
- • Branschklassificering (SNI)
- • Verksamhetsbeskrivning
- • Registreringsdatum
Bästa praxis
- • Använd bulk-endpoint för batch-anrikning
- • Kontrollera matchningspoäng för konfidens
- • Cacha berikad data (uppdatera månatligen)
- • Hantera partiella matchningar på ett bra sätt
Branschanalys
Analysera företag per bransch med SNI-koder (Svensk Näringsgrensindelning). Perfekt för marknadsundersökningar, konkurrentanalys och försäljningsprospektering.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657// Industry Analysis - Find companies by SNI code
async function getCompaniesByIndustry(sniCode) {
// First, get the SNI description
const sniResponse = await fetch('https://data.foretagsapi.se/v1/sni/lookup', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({ code: sniCode })
});
const sniData = await sniResponse.json();
const industryDescription = sniData.sniCodes[0]?.description;
// Then, search for companies with this SNI code
const companiesResponse = await fetch('https://data.foretagsapi.se/v1/sni/search', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({ sni_code: sniCode })
});
const companiesData = await companiesResponse.json();
return {
industryCode: sniCode,
industryDescription,
companies: companiesData.companies,
totalCount: companiesData.metadata?.resultCount || companiesData.companies.length
};
}
// Market research example
async function analyzeMarket(sniCodes) {
const results = [];
for (const sniCode of sniCodes) {
const industry = await getCompaniesByIndustry(sniCode);
results.push(industry);
}
return {
analyzedAt: new Date().toISOString(),
industries: results,
totalCompanies: results.reduce((sum, i) => sum + i.totalCount, 0)
};
}
// Example: Analyze tech industries
const techIndustries = await analyzeMarket([
'62100', // Computer programming
'62020', // IT consultancy
'63100', // Data processing, hosting
]);
Vanliga SNI-koder
Kredit-/riskkontroll
Verifiera företagsstatus innan affärstransaktioner. Detta mönster kontrollerar avregistrering, företagets ålder och statusflaggor för att bedöma risk.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869// Credit/Risk Check - Verify company status before business transactions
async function performCreditCheck(orgNumber) {
const response = await fetch('https://data.foretagsapi.se/v1/search', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({ org_number: orgNumber })
});
const data = await response.json();
if (!data.companies || data.companies.length === 0) {
return {
status: 'NOT_FOUND',
riskLevel: 'HIGH',
message: 'Company not found in registry'
};
}
const company = data.companies[0];
// Analyze risk factors
const riskFactors = [];
let riskScore = 0;
// Check if company is deregistered
if (company.deregistrationDate) {
riskFactors.push(`Company deregistered: ${company.deregistrationReason}`);
riskScore += 100;
}
// Check company age (newer companies = higher risk)
const registrationDate = new Date(company.registrationDate);
const yearsOld = (Date.now() - registrationDate) / (365 * 24 * 60 * 60 * 1000);
if (yearsOld < 1) {
riskFactors.push('Company less than 1 year old');
riskScore += 30;
} else if (yearsOld < 3) {
riskFactors.push('Company less than 3 years old');
riskScore += 15;
}
// Check status flags
if (company.ftgstat !== 1) {
riskFactors.push('Company status flag indicates potential issues');
riskScore += 20;
}
// Determine risk level
let riskLevel = 'LOW';
if (riskScore >= 50) riskLevel = 'MEDIUM';
if (riskScore >= 80) riskLevel = 'HIGH';
return {
status: 'FOUND',
riskLevel,
riskScore,
riskFactors,
company: {
name: company.name,
orgNumber: company.orgNumber,
registrationDate: company.registrationDate,
isActive: !company.deregistrationDate,
legalForm: company.legalForm
}
};
}
Viktig information
| Riskfaktor | Kontroll | Vikt |
|---|---|---|
| Avregistrerat | deregistrationDate är inte null | Kritisk |
| Mycket nytt | Registreringsdatum < 1 år sedan | Hög |
| Nytt | Registreringsdatum < 3 år sedan | Medel |
| Statusflagga | ftgstat !== 1 | Medel |