Docs/ SCPI

SCPI

GET /scpi/{idOrIsin} and GET /scpi?q=: structured data for French SCPIs from their management companies' bulletins, DIC and annual reports.

What an SCPI payload is

French SCPIs (sociétés civiles de placement immobilier) are unlisted real-estate funds priced by their management company. They publish a bulletin trimestriel, a DIC (PRIIPs key information document), a rapport annuel and a note d'information; FundFacts reads those documents on the management company's own site and returns one structured payload per SCPI: pricing and terms, the taux de distribution history, valuation figures, the property portfolio with its sector and geographic splits, liquidity, and the document links. The shape is distinct from the fund payload (field reference) because the vocabulary is different.

Identify an SCPI by its slug (perial-o2, corum-origin, epargne-pierre), by its ISIN when it has one, or by its name. Use the search endpoint to find slugs.

GET /scpi/{idOrIsin}

Structured data for one SCPI. The path segment is a slug, an ISIN or a URL-encoded name. Same authentication, credits, burst limits and quota headers as GET /funds/{isin}; one credit per call. A cold load reads the manager's page and PDFs and takes 10–60 seconds; later calls within 24 hours return from the store.

curl --max-time 300 https://fundfactsapi.com/api/v1/scpi/perial-o2 \
-H "Authorization: Bearer ffk_your_api_key"

Response envelope

FieldTypeDescription
slugstring
Canonical identifier of the SCPI (use it in later calls).
isinstring | null
ISIN of the shares when known.
namestring | null
SCPI name.
managerstring
Management-company adapter id (perial, corum, sofidy…).
cachedboolean
true when served from the 24-hour store, false when refreshed for this request.
generatedAtstring (ISO 8601) | null
When the payload was produced.
expiresAtstring (ISO 8601) | null
When the payload will be considered stale and refreshed on the next request.
plan"free" | "starter" | "pro" | "scale" | "enterprise"
Plan of the API key used for the request.
quotaobject
Credit state after this request, same shape as on /funds.
dataobject
The structured SCPI payload. See the field reference below.
200 OK — perial-o2 (breakdowns shortened)json
{
"slug": "perial-o2",
"isin": null,
"name": "PERIAL O2",
"manager": "perial",
"cached": true,
"generatedAt": "2026-09-09T12:58:11.204Z",
"expiresAt": "2026-09-10T12:58:11.204Z",
"plan": "pro",
"quota": { "limit": 9000, "remaining": 8710, "used": 290, "overageUsed": 0, "resetAt": "2026-10-01T00:00:00.000Z", "burst": { "limit": 120, "remaining": 119 } },
"data": {
"keyFacts": {
"name": "PERIAL O2", "managementCompany": "PERIAL Asset Management", "isin": null,
"category": "bureaux", "capitalType": "variable", "creationYear": 2009,
"capitalisationEur": 1100000000, "sharePriceEur": 164, "withdrawalPriceEur": 150.06,
"subscriptionFeesPct": 10.2, "managementFeesPct": 13.8,
"minimumSubscriptionShares": 30, "minimumSubscriptionEur": 4920,
"delayOfJouissance": "1er jour du mois suivant la souscription",
"riskIndicator": 4, "sfdrArticle": 9, "labelIsr": true
},
"performance": {
"distributionRateByYear": [ { "year": "2021", "value": 4.59 }, { "year": "2022", "value": 4.32 }, { "year": "2023", "value": 4.1 }, { "year": "2024", "value": 4.91 }, { "year": "2025", "value": 4.65 } ],
"distributionPerShareByYear": [ { "year": "2024", "value": 7.8 }, { "year": "2025", "value": 7.08 } ],
"tri": { "y5": 4.39, "y10": null, "y15": null },
"reconstitutionValueEur": 143.65, "realisationValueEur": 113.55,
"sharePriceHistory": [ { "date": "2023-01-01", "priceEur": 196 }, { "date": "2024-01-01", "priceEur": 164 } ],
"lastQuarterDistributionPerShareEur": 1.5
},
"portfolio": {
"numberOfProperties": 135, "surfaceSqm": 949439, "numberOfTenants": 473,
"financialOccupancyRatePct": 84.6, "physicalOccupancyRatePct": null, "walbYears": 3.8, "waltYears": null,
"sectorSplit": [ { "label": "Bureaux", "weight": 84.7 }, { "label": "Hôtels, tourisme, loisirs", "weight": 6.3 }, … ],
"geographicSplit": [ { "label": "Régions", "weight": 37.5 }, { "label": "Île-de-France", "weight": 35.6 }, { "label": "Pays-Bas", "weight": 9.9 }, … ],
"topTenants": []
},
"liquidity": { "sharesAwaitingWithdrawal": null, "netInflowLastQuarterEur": null, "sharesOutstanding": 14643842, "numberOfAssociates": 28479 },
"documents": {
"productUrl": "https://www.perial.com/scpi/perial-o2",
"bulletinUrl": "https://cdn.prod.website-files.com/…/PERIAL O2 - Bulletin trimestriel d'information (T2 2026).pdf",
"annualReportUrl": "https://cdn.prod.website-files.com/…/Rapport annuel PERIAL O2.pdf",
"kidUrl": "https://cdn.prod.website-files.com/…/Document d'information clé PERIAL O2.pdf",
"noteInformationUrl": "https://cdn.prod.website-files.com/…/Note d'information.pdf",
"statutsUrl": "https://cdn.prod.website-files.com/…/Statuts PERIAL O2.pdf"
},
"dataAsOf": "2026-06-30",
"bulletinPeriod": "T2 2026",
"generatedAt": "2026-09-09T12:58:11.204Z"
}
}

Unknown identifiers answer 404 scpi_not_found; an SCPI whose documents could not be read answers 404 with the same code and the empty data skeleton.

?q= an SCPI name, a management company, or the first characters of an ISIN; &limit= up to 50. Searches the known SCPI universe (seeded with the SCPIs of the covered management companies, and growing with what the store learns, such as ISINs read from the DIC). Free; counts towards the per-minute burst limit.

curl "https://fundfactsapi.com/api/v1/scpi?q=epargne+pierre&limit=5" -H "Authorization: Bearer ffk_..."
json
{ "query": "epargne pierre", "count": 2, "results": [
{ "slug": "epargne-pierre", "isin": null, "name": "Épargne Pierre", "manager": "atland-voisin", "managerName": "Atland Voisin", "category": "diversifiée", "loaded": true, "dataAsOf": "2026-06-30", "url": "https://fundfactsapi.com/api/v1/scpi/epargne-pierre" },
{ "slug": "epargne-pierre-europe", "isin": null, "name": "Épargne Pierre Europe", "manager": "atland-voisin", "managerName": "Atland Voisin", "category": "européenne", "loaded": false, "dataAsOf": null, "url": "https://fundfactsapi.com/api/v1/scpi/epargne-pierre-europe" }
], "plan": "free", "quota": { … } }

Sourcing & freshness

Every figure comes from public regulatory documents published by the SCPI's management company: the latest bulletin trimestriel (headline figures, TOF, splits, liquidity), the DIC (risk indicator and entry costs, read deterministically), the first pages of the rapport annuel and the note d'information (terms, fees, délai de jouissance), plus the SCPI's page. No aggregator or third-party database is read. Payloads are stored for 24 hours and refreshed on the next request after that; dataAsOf is the date of the bulletin's figures and bulletinPeriod its period label. Bulletins are quarterly (sometimes semi-annual), so the figures move at that rhythm.

Management companies covered

Coverage is verified by scripts/scpi-coverage.mts; the level describes what the manager's site makes readable. Names are used only to describe that public material; FundFacts API is independent of all of them.

ManagerSCPIsCoverageNotes
Paref Gestion4pagePlain fetches are refused (403); the SCPI page is rendered in the standard browser, documents are read when the render exposes their links.
Perial Asset Management4documentsSCPI page plus bulletin trimestriel, DIC, rapport annuel, note d'information and statuts, all linked from the page.
Atland Voisin4documentsSCPI page, bulletin trimestriel and rapport annuel; the DIC is an HTML page read as text.
La Française REM3documentsSCPI sheet plus bulletin trimestriel, DIC, rapport annuel and note d'information served from doc.la-francaise.com.
Praemia REIM2documentsSCPI sheet on praemiareim.fr plus bulletin trimestriel, DIC, rapport annuel, note d'information and statuts.
Corum Asset Management3documentsSCPI page plus the documents page: bulletin trimestriel, DIC, rapport annuel and note d'information.
Sofidy2documentsSCPI page plus bulletin trimestriel, DIC, rapport annuel, note d'information and statuts linked from the page.
Iroko2documentsSCPI page plus the shared documentation page: bulletin trimestriel, DIC, rapport annuel, note d'information and statuts.
Remake Asset Management1documentsSCPI page plus bulletin d'information, DIC, rapport annuel, note d'information and statuts via the site's download endpoints.
Alderan2documentsSCPI page plus bulletin trimestriel, DIC, rapport annuel, note d'information and statuts from the documentation pages.
Norma Capital2documentsSCPI page plus bulletin trimestriel, DIC, note d'information and rapport annuel served from /documentation/ URLs.
Fiducial Gérance3documentsSCPI page plus bulletin trimestriel, DIC, rapport annuel and note d'information from the Documentation tab.
AEW Patrimoine2documentsSCPI page plus bulletin (semestriel / trimestriel), DIC and rapport annuel linked from the page.

Key facts

Identity, pricing and terms of the SCPI as printed by its management company (bulletin trimestriel, DIC, note d'information). Prices are EUR per share; fees are percentages as printed (TTI / TTC or HT as the document states).
FieldTypeDescription
keyFacts.namestring
Official SCPI name.e.g. "Perial O2"
keyFacts.managementCompanystring
Société de gestion.e.g. "PERIAL Asset Management"
keyFacts.isinstring | null
ISIN of the shares when the SCPI has one (most FR-prefixed); null when not printed in the documents.e.g. "FR0011254991"
keyFacts.category"bureaux" | "commerces" | "santé" | "logistique" | "diversifiée" | "résidentiel" | "européenne" | "autre" | null
Dominant property type, or européenne when more than half of the assets are outside France.e.g. "bureaux"
keyFacts.capitalType"fixe" | "variable" | null
SCPI à capital fixe or variable.e.g. "variable"
keyFacts.creationYearnumber | null
Year of creation.e.g. 2009
keyFacts.capitalisationEurnumber | null
Capitalisation in EUR (prix de souscription × parts en circulation).e.g. 1100000000
keyFacts.sharePriceEurnumber | null
Prix de souscription per share, EUR.e.g. 164
keyFacts.withdrawalPriceEurnumber | null
Prix de retrait (valeur de retrait) per share, EUR.e.g. 150.06
keyFacts.subscriptionFeesPctnumber | null
Commission de souscription, percent of the subscription price. Read from the DIC's entry-cost line when present.e.g. 10.2
keyFacts.managementFeesPctnumber | null
Commission de gestion, percent of rental income (HT or TTC as printed).e.g. 13.8
keyFacts.minimumSubscriptionSharesnumber | null
Minimum first subscription, in shares.e.g. 30
keyFacts.minimumSubscriptionEurnumber | null
Minimum first subscription, in EUR.e.g. 4920
keyFacts.delayOfJouissancestring | null
Délai de jouissance as printed.e.g. "1er jour du 6e mois suivant la souscription"
keyFacts.riskIndicatornumber | null
Indicateur synthétique de risque of the DIC (1 lowest to 7 highest), read deterministically from the DIC.e.g. 4
keyFacts.sfdrArticlenumber | null
SFDR classification stated in the documents: 6, 8 or 9.e.g. 9
keyFacts.labelIsrboolean | null
Whether the SCPI states it holds the Label ISR; null when not mentioned.e.g. true

Performance & valuation

Distribution history and the regulatory valuation figures of the bulletin and the annual report. Rates are percentages, values are EUR per share.
FieldTypeDescription
performance.distributionRateByYearArray<{ year: string; value: number }>
Taux de distribution (TD) per calendar year, percent, oldest first, up to the last five full years.e.g. [{ "year": "2024", "value": 4.91 }, { "year": "2025", "value": 4.65 }]
performance.distributionPerShareByYearArray<{ year: string; value: number }>
Dividende brut par part per calendar year, EUR.e.g. [{ "year": "2025", "value": 7.08 }]
performance.tri.y5 / y10 / y15number | null
Taux de rentabilité interne over 5, 10 and 15 years, annualised percent, when the manager publishes them.e.g. 4.39
performance.reconstitutionValueEurnumber | null
Valeur de reconstitution per share, EUR.e.g. 143.65
performance.realisationValueEurnumber | null
Valeur de réalisation per share, EUR.e.g. 113.55
performance.sharePriceHistoryArray<{ date: string; priceEur: number }>
Prix de souscription history when the documents print one (date of the price, ISO).e.g. [{ "date": "2024-01-01", "priceEur": 164 }]
performance.lastQuarterDistributionPerShareEurnumber | null
Acompte / dividende par part of the latest bulletin's quarter, EUR.e.g. 1.5

Portfolio

Size and occupancy of the property portfolio, with the sector and geographic splits as printed in the bulletin (by rental value or surface as the manager reports).
FieldTypeDescription
portfolio.numberOfPropertiesnumber | null
Nombre d'immeubles / actifs.e.g. 135
portfolio.surfaceSqmnumber | null
Total surface, m².e.g. 949439
portfolio.numberOfTenantsnumber | null
Nombre de locataires.e.g. 473
portfolio.financialOccupancyRatePctnumber | null
Taux d'occupation financier (TOF), percent.e.g. 84.6
portfolio.physicalOccupancyRatePctnumber | null
Taux d'occupation physique (TOP), percent, when published.e.g. 91.2
portfolio.walbYearsnumber | null
WALB (weighted average lease break), years, when published.e.g. 3.8
portfolio.waltYearsnumber | null
WALT (durée ferme résiduelle des baux), years, when published.e.g. 5.1
portfolio.sectorSplitArray<{ label: string; weight: number }>
Répartition sectorielle / typologique, percent.e.g. [{ "label": "Bureaux", "weight": 84.7 }, …]
portfolio.geographicSplitArray<{ label: string; weight: number }>
Répartition géographique by region and/or country, percent, as the bulletin prints it.e.g. [{ "label": "Île-de-France", "weight": 35.6 }, { "label": "Pays-Bas", "weight": 9.9 }, …]
portfolio.topTenantsArray<{ name: string; weight: number | null }>
Principaux locataires with their share of rents when published.e.g. [{ "name": "Ministère de l’Intérieur", "weight": 4.1 }]

Liquidity

The secondary-market and capital figures of the latest bulletin.
FieldTypeDescription
liquidity.sharesAwaitingWithdrawalnumber | null
Parts en attente de retrait at the bulletin date.e.g. 0
liquidity.netInflowLastQuarterEurnumber | null
Collecte nette of the latest quarter, EUR.e.g. 12400000
liquidity.sharesOutstandingnumber | null
Nombre de parts en circulation.e.g. 14643842
liquidity.numberOfAssociatesnumber | null
Nombre d'associés.e.g. 28479

Documents & freshness

The public regulatory documents the payload was read from (all published by the management company), and when the figures are dated.
FieldTypeDescription
documents.productUrlstring | null
The SCPI's page on the management company's site.
documents.bulletinUrlstring | null
Latest bulletin trimestriel (or semestriel) d'information, PDF.
documents.annualReportUrlstring | null
Latest rapport annuel, PDF.
documents.kidUrlstring | null
DIC (PRIIPs key information document), PDF.
documents.noteInformationUrlstring | null
Note d'information visée par l'AMF, PDF.
documents.statutsUrlstring | null
Statuts, PDF.
documents.factsheetUrlstring | null
Fiche produit / plaquette published by the manager, when linked.
dataAsOfstring
Date of the latest figures (end of the bulletin's quarter), ISO YYYY-MM-DD; empty when unknown.e.g. "2026-06-30"
bulletinPeriodstring | null
Period of the latest bulletin as printed.e.g. "T2 2026"
generatedAtstring (ISO 8601)
Timestamp of the refresh that produced this payload. Payloads are refreshed when older than 24 hours.e.g. "2026-09-09T13:41:07.112Z"