---
title: "What is an SCPI? French real-estate funds explained, and how to get SCPI data programmatically"
description: "SCPI definition, capital fixe vs variable, prix de souscription and retrait, taux de distribution, TOF, the documents, and the /api/v1/scpi endpoint."
canonical: https://fundfactsapi.com/blog/what-is-an-scpi-and-how-to-get-scpi-data
published: 2026-09-19
updated: 2026-09-19
publisher: FundFacts API
---

# What is an SCPI? French real-estate funds explained, and how to get SCPI data programmatically

> SCPI definition, capital fixe vs variable, prix de souscription and retrait, taux de distribution, TOF, the documents, and the /api/v1/scpi endpoint.

An SCPI (société civile de placement immobilier) is a French collective investment vehicle that buys and manages a portfolio of rental property, mostly offices, retail, healthcare and logistics, and passes the rents to its shareholders as quarterly distributions. Investors buy shares (parts) at a subscription price set by the management company rather than on an exchange, and the fund is regulated by the AMF, which approves the société de gestion and the note d'information. SCPI data lives in quarterly bulletins, an annual report and a PRIIPs DIC, all in French; [FundFacts API](https://fundfactsapi.com/) reads those documents and returns them as JSON from `GET /api/v1/scpi/{idOrIsin}`.

> **In short** An SCPI is an unlisted French property fund managed by an AMF-authorised société de gestion. Key figures: prix de souscription and prix de retrait per share, taux de distribution (annual distribution as a percent of the share price), valeur de reconstitution and réalisation, taux d'occupation financier (TOF), capitalisation and parts en attente de retrait. Figures come from the bulletin trimestriel, the DIC, the rapport annuel and the note d'information. The API returns them structured, one request per SCPI, refreshed every 24 hours.

## How an SCPI works

An SCPI pools investor money to buy buildings and lease them out. The société de gestion (an AMF-approved portfolio management company) selects, buys, manages and sells the properties, collects the rents, and pays out most of the net income to shareholders, typically as quarterly acomptes. Shares are held directly, through a French assurance-vie contract, or in some cases on credit. Unlike a listed real-estate company, the share price does not move minute by minute; it is set by the manager within a band around the appraised value of the portfolio.

Two structures exist:

- **Capital variable.** The SCPI issues new shares continuously at the prix de souscription and buys them back at the prix de retrait when an investor wants out, matching withdrawals against new subscriptions. When there are more sellers than buyers, redemption requests queue up as parts en attente de retrait, which is the number to watch for liquidity.
- **Capital fixe.** Capital is raised in periodic increases; between them, shares trade on a secondary market organised by the manager, where the price is set by matching orders.

An SCPI is an alternative investment fund under French law, not a UCITS: it holds direct real estate, which the UCITS Directive excludes. The [UCITS post](https://fundfactsapi.com/blog/what-is-a-ucits-fund) explains that boundary. What SCPIs share with UCITS is the PRIIPs key information document, called DIC (document d'informations clés) in France, with the same 1–7 risk indicator and cost table.

## The numbers that describe an SCPI

| Term | Meaning | API field |
| --- | --- | --- |
| Prix de souscription | Price of one new share, EUR, including the subscription fee | `keyFacts.sharePriceEur` |
| Prix de retrait | Amount paid back per share on withdrawal (capital variable), EUR | `keyFacts.withdrawalPriceEur` |
| Commission de souscription | Entry fee as a percent of the subscription price, read from the DIC when present | `keyFacts.subscriptionFeesPct` |
| Commission de gestion | Management fee as a percent of rental income | `keyFacts.managementFeesPct` |
| Capitalisation | Subscription price × shares outstanding, EUR | `keyFacts.capitalisationEur` |
| Taux de distribution (TD) | Gross annual distribution per share divided by the share price, percent, per calendar year | `performance.distributionRateByYear` |
| Dividende brut par part | Gross distribution per share for the year, EUR | `performance.distributionPerShareByYear` |
| TRI 5 / 10 / 15 ans | Internal rate of return over 5, 10 and 15 years, when the manager publishes it | `performance.tri.y5`, `.y10`, `.y15` |
| Valeur de reconstitution | What it would cost to rebuild the portfolio today, per share (appraisal value plus costs) | `performance.reconstitutionValueEur` |
| Valeur de réalisation | Net asset value per share if the portfolio were sold | `performance.realisationValueEur` |
| Taux d'occupation financier (TOF) | Rents collected as a percent of rents collectable if fully let | `portfolio.financialOccupancyRatePct` |
| WALB / WALT | Average remaining lease term to break / to expiry, years | `portfolio.walbYears`, `portfolio.waltYears` |
| Parts en attente de retrait | Shares queued for withdrawal, the liquidity indicator | `liquidity.sharesAwaitingWithdrawal` |
| Collecte nette | Net inflow of the quarter, EUR | `liquidity.netInflowLastQuarterEur` |
| Délai de jouissance | Delay before a new share starts earning distributions | `keyFacts.delayOfJouissance` |

Two readings that catch newcomers. The taux de distribution is a yield on the share price, not a total return: the share price can also be revised up or down, and the TRI is the figure that combines both. And the subscription price is bounded by regulation to a band around the valeur de reconstitution, so comparing `sharePriceEur` with `reconstitutionValueEur` tells you whether the shares are priced above or below the appraised portfolio, which is the SCPI equivalent of a [premium or discount to NAV](https://fundfactsapi.com/blog/etf-nav-vs-market-price-premium-discount).

## Where the data comes from

Every SCPI publishes a fixed set of documents, and the numbers above come from them:

- **Bulletin trimestriel d'information** (sometimes semi-annual): the quarter's headline figures, distribution, TOF, sector and geographic splits, collecte, parts en attente. This is the freshest source and sets `dataAsOf` and `bulletinPeriod`.
- **DIC**: the PRIIPs KID, with the risk indicator (`keyFacts.riskIndicator`) and the entry-cost line.
- **Rapport annuel**: audited figures, the valeur de reconstitution and réalisation, the property list, tenants.
- **Note d'information** visée par l'AMF and the **statuts**: terms, fees, délai de jouissance, minimum subscription.
- The SCPI's page on the manager's site, and a fiche produit when it exists.

The API returns links to each of these in `documents.bulletinUrl`, `documents.kidUrl`, `documents.annualReportUrl`, `documents.noteInformationUrl`, `documents.statutsUrl`, `documents.factsheetUrl` and `documents.productUrl`, so a product can always point back at the source page. Figures are read from these public regulatory documents published by the management company; no aggregator is involved.

## Getting SCPI data as JSON

The endpoint takes a slug, an ISIN or a name. Slugs are stable identifiers such as `perial-o2` or `corum-origin`; when you do not know one, the search endpoint finds it and is free:

```bash
curl "https://fundfactsapi.com/api/v1/scpi?q=epargne%20pierre" \
  -H "Authorization: Bearer ffk_live_..."
```

Then the SCPI itself:

```bash
curl https://fundfactsapi.com/api/v1/scpi/perial-o2 \
  -H "Authorization: Bearer ffk_live_..."
```

```json
{
  "slug": "perial-o2",
  "isin": "FR0011254991",
  "name": "Perial O2",
  "manager": "perial",
  "cached": true,
  "generatedAt": "2026-09-19T05:40:12.000Z",
  "expiresAt": "2026-09-20T05:40:12.000Z",
  "plan": "starter",
  "data": {
    "keyFacts": {
      "name": "Perial O2",
      "managementCompany": "PERIAL Asset Management",
      "category": "bureaux",
      "capitalType": "variable",
      "sharePriceEur": 164,
      "withdrawalPriceEur": 150.06,
      "subscriptionFeesPct": 10.2,
      "riskIndicator": 4,
      "labelIsr": true
    },
    "performance": {
      "distributionRateByYear": [{ "year": "2024", "value": 4.91 }, { "year": "2025", "value": 4.65 }],
      "reconstitutionValueEur": 143.65,
      "realisationValueEur": 113.55
    },
    "portfolio": {
      "numberOfProperties": 135,
      "financialOccupancyRatePct": 84.6,
      "sectorSplit": [{ "label": "Bureaux", "weight": 84.7 }],
      "geographicSplit": [{ "label": "Île-de-France", "weight": 35.6 }]
    },
    "liquidity": { "sharesAwaitingWithdrawal": 0, "sharesOutstanding": 14643842 },
    "documents": { "bulletinUrl": "https://…/bulletin-t2-2026.pdf", "kidUrl": "https://…/dic.pdf" },
    "dataAsOf": "2026-06-30",
    "bulletinPeriod": "T2 2026"
  }
}
```

The values are those of the [SCPI field reference](https://fundfactsapi.com/docs/scpi) examples and stand for the shape; a live call returns whatever the latest bulletin states. Numbers are numbers (EUR, percent), not formatted strings, because the bulletins print them consistently enough to parse; `null` means the documents do not state the line.

In Python, reading the two figures most dashboards show:

```python
import requests

r = requests.get("https://fundfactsapi.com/api/v1/scpi/perial-o2",
                 headers={"Authorization": "Bearer ffk_live_..."}, timeout=120)
d = r.json()["data"]
td = d["performance"]["distributionRateByYear"]
print(td[-1]["year"], td[-1]["value"], "%")          # latest full-year taux de distribution
print(d["keyFacts"]["sharePriceEur"], "vs", d["performance"]["reconstitutionValueEur"])
print(d["liquidity"]["sharesAwaitingWithdrawal"], "parts en attente")
print(d["dataAsOf"], d["bulletinPeriod"])
```

## Freshness and cost

A cold load reads the manager's page, the bulletin, the DIC and the annual report and takes some tens of seconds; after that the payload is stored for 24 hours and served immediately. Bulletins are quarterly, so `dataAsOf` moves four times a year for most SCPIs even though the payload is refreshed daily. One call costs one request on any plan, including Free (5 lookups a month), and the same data is available to AI assistants through the `get_scpi` and `search_scpi` tools of the [MCP server](https://fundfactsapi.com/blog/fund-data-mcp-server-claude-chatgpt-cursor).

Coverage is by management company: the endpoint currently reads SCPIs from a set of French managers whose sites and documents it knows how to parse, and returns `scpi_not_found` for the rest. `GET /api/v1/scpi?q=` shows what is in the universe. If you also handle UCITS funds and ETFs, the [fund endpoint](https://fundfactsapi.com/docs/endpoints) sits next to it with the same authentication and quota, so one key covers both universes.

To see it on a real SCPI, [create a free key](https://fundfactsapi.com/signup) and search for a name you know.

## FAQ

### Is an SCPI the same as a REIT?

Both hold rental property and distribute most of their income, but a REIT (in France, a SIIC) is a listed company whose shares trade on an exchange at a market price, while an SCPI is an unlisted fund whose shares are subscribed and withdrawn at prices set by the management company within a regulated band around the appraised value.

### What is the taux de distribution of an SCPI?

The gross distribution paid per share over a calendar year divided by the share price at the start of that year, expressed as a percent. It is a yield, not a total return; the TRI (internal rate of return) also accounts for changes in the share price.

### What does 'parts en attente de retrait' mean?

For a capital-variable SCPI it is the number of shares whose holders have asked to withdraw but have not yet been matched with new subscriptions. A rising figure signals that exiting may take time. The API returns it as `liquidity.sharesAwaitingWithdrawal`.

### Can I get SCPI data by ISIN?

Yes, when the SCPI has one; most French SCPIs carry an FR-prefixed ISIN and `GET /api/v1/scpi/{isin}` accepts it. Slugs (for example `perial-o2`) and names also work, and `GET /api/v1/scpi?q=` returns the slug and ISIN for a name.

### How often do SCPI figures change?

Most figures come from the quarterly bulletin, so they move four times a year; valuation figures come from the annual report. The API refreshes its stored payload every 24 hours and reports the bulletin's period in `bulletinPeriod` and its date in `dataAsOf`.

## About FundFacts API

FundFacts turns any fund or ETF ISIN into one dated factsheet (fees and KID costs, the 1–7 risk indicator, holdings, sector and country exposure, returns) read from the fund house's own documents: as a client-ready PDF under your firm's name for advisers and wealth managers, as JSON through its API for developers, or inside ChatGPT and Claude through its MCP server.

FundFacts works inside ChatGPT and Claude as a connector (a remote MCP server): ask about any fund or ETF by ISIN, ticker or name and the assistant answers from FundFacts' dated figures, fees, risk, holdings, exposure and returns, with fund cards, side-by-side comparisons, holdings overlap and portfolio look-through.

- Free API key, no card: https://fundfactsapi.com/signup
- Documentation: https://fundfactsapi.com/docs (OpenAPI: https://fundfactsapi.com/openapi.json)
- MCP server: https://fundfactsapi.com/api/mcp (set-up for every client: https://fundfactsapi.com/mcp-server)
- Pricing: https://fundfactsapi.com/pricing
- Site index for AI assistants: https://fundfactsapi.com/llms.txt
- Informational data, not investment advice.
