REST API
Public, read-only JSON. Aggregate endpoints return full data; /api/articles returns a sample of up to 10 confirmed articles, enough to see the data shape. Article-level and bulk access is available on request:JSON público y de solo lectura. Los endpoints agregados devuelven datos completos; /api/articles devuelve una muestra de hasta 10 artículos confirmados, suficiente para ver la forma de los datos. El acceso a nivel de artículo y en volumen está disponible bajo pedido:Öffentliches, schreibgeschütztes JSON. Aggregierte Endpunkte liefern vollständige Daten; /api/articles liefert eine Stichprobe von bis zu 10 bestätigten Artikeln, genug, um die Datenstruktur zu sehen. Zugriff auf Artikelebene und in großem Umfang auf Anfrage: contact uscontáctanoskontaktieren Sie uns.
Base URL: https://femicide-watch.up.railway.app
ArticlesArtículosArtikel
/api/articlesA public sample of confirmed articles (up to 10). Filters apply inside that sample.Una muestra pública de artículos confirmados (hasta 10). Los filtros se aplican dentro de esa muestra.Eine öffentliche Stichprobe bestätigter Artikel (bis zu 10). Filter gelten innerhalb dieser Stichprobe.
| ParameterParámetroParameter | TypeTipoTyp | DescriptionDescripciónBeschreibung |
|---|---|---|
country | string | Country code: UK, CL, AR, MX, ES or DE.Código de país: UK, CL, AR, MX, ES o DE.Ländercode: UK, CL, AR, MX, ES oder DE. |
year | integer | Filter by year, e.g. 2025.Filtrar por año, p. ej. 2025.Nach Jahr filtern, z. B. 2025. |
month | integer | Filter by month, 1–12.Filtrar por mes, 1–12.Nach Monat filtern, 1–12. |
type | string | Femicide type, e.g. femicidio_intimo, femicidio_familiar.Tipo de femicidio, p. ej. femicidio_intimo, femicidio_familiar.Femizid-Typ, z. B. femicidio_intimo, femicidio_familiar. |
relacion | string | Victim–perpetrator relationship, e.g. intimo_actual, intimo_ex.Relación víctima–agresor, p. ej. intimo_actual, intimo_ex.Beziehung Opfer–Täter, z. B. intimo_actual, intimo_ex. |
motivo | string | Motive, e.g. rechazo_separacion, violencia_habitual.Motivo, p. ej. rechazo_separacion, violencia_habitual.Motiv, z. B. rechazo_separacion, violencia_habitual. |
Example requestEjemplo de solicitudBeispielanfrage
GET /api/articles?country=CL
Example responseEjemplo de respuestaBeispielantwort
{
"total": 1,
"page": 1,
"per_page": 1,
"items": [
{
"id": 1,
"title": "Example headline",
"web_url": "https://example.com/article",
"thumbnail": null,
"section": null,
"published_date": "2025-03-14",
"source": "Example Source",
"country": "CL",
"snippet": "Example snippet of the article…",
"femicide_type": "femicidio_intimo",
"femicide_relacion": "intimo_ex",
"femicide_motivo": "rechazo_separacion"
}
]
}TimelineLínea de tiempoZeitverlauf
/api/timelineConfirmed article counts per month, the date range and the total.Conteo mensual de artículos confirmados, el rango de fechas y el total.Bestätigte Artikel pro Monat, Zeitraum und Gesamtzahl.
| ParameterParámetroParameter | TypeTipoTyp | DescriptionDescripciónBeschreibung |
|---|---|---|
country | string | Country code: UK, CL, AR, MX, ES or DE.Código de país: UK, CL, AR, MX, ES o DE.Ländercode: UK, CL, AR, MX, ES oder DE. |
Example requestEjemplo de solicitudBeispielanfrage
GET /api/timeline?country=MX
Example responseEjemplo de respuestaBeispielantwort
{
"monthly_counts": [
{
"year": 2025,
"month": 1,
"count": 24
},
{
"year": 2025,
"month": 2,
"count": 19
}
],
"total": 43,
"date_range": {
"first": "2025-01-03",
"last": "2025-02-26"
}
}Femicide typesTipos de femicidioFemizid-Typen
/api/typesArticle counts by femicide type, as an object {type: count}.Conteo de artículos por tipo de femicidio, como objeto {tipo: conteo}.Artikelzahlen nach Femizid-Typ, als Objekt {Typ: Anzahl}.
| ParameterParámetroParameter | TypeTipoTyp | DescriptionDescripciónBeschreibung |
|---|---|---|
country | string | Country code: UK, CL, AR, MX, ES or DE.Código de país: UK, CL, AR, MX, ES o DE.Ländercode: UK, CL, AR, MX, ES oder DE. |
Example requestEjemplo de solicitudBeispielanfrage
GET /api/types?country=CL
Example responseEjemplo de respuestaBeispielantwort
{
"femicidio_intimo": 142,
"femicidio_familiar": 38
}RelationshipsRelacionesBeziehungen
/api/relacionesArticle counts by victim–perpetrator relationship, as {relationship: count}.Conteo de artículos por relación víctima–agresor, como {relación: conteo}.Artikelzahlen nach Beziehung Opfer–Täter, als {Beziehung: Anzahl}.
| ParameterParámetroParameter | TypeTipoTyp | DescriptionDescripciónBeschreibung |
|---|---|---|
country | string | Country code: UK, CL, AR, MX, ES or DE.Código de país: UK, CL, AR, MX, ES o DE.Ländercode: UK, CL, AR, MX, ES oder DE. |
Example requestEjemplo de solicitudBeispielanfrage
GET /api/relaciones
Example responseEjemplo de respuestaBeispielantwort
{
"intimo_actual": 98,
"intimo_ex": 67
}MotivesMotivosMotive
/api/motivosArticle counts by motive, as {motive: count}.Conteo de artículos por motivo, como {motivo: conteo}.Artikelzahlen nach Motiv, als {Motiv: Anzahl}.
| ParameterParámetroParameter | TypeTipoTyp | DescriptionDescripciónBeschreibung |
|---|---|---|
country | string | Country code: UK, CL, AR, MX, ES or DE.Código de país: UK, CL, AR, MX, ES o DE.Ländercode: UK, CL, AR, MX, ES oder DE. |
Example requestEjemplo de solicitudBeispielanfrage
GET /api/motivos?country=UK
Example responseEjemplo de respuestaBeispielantwort
{
"rechazo_separacion": 45,
"violencia_habitual": 32
}Types by monthTipos por mesTypen pro Monat
/api/types-by-monthFemicide type counts per month — useful for stacked charts.Conteo de tipos de femicidio por mes — útil para gráficos apilados.Femizid-Typen pro Monat — nützlich für gestapelte Diagramme.
| ParameterParámetroParameter | TypeTipoTyp | DescriptionDescripciónBeschreibung |
|---|---|---|
country | string | Country code: UK, CL, AR, MX, ES or DE.Código de país: UK, CL, AR, MX, ES o DE.Ländercode: UK, CL, AR, MX, ES oder DE. |
Example requestEjemplo de solicitudBeispielanfrage
GET /api/types-by-month
Example responseEjemplo de respuestaBeispielantwort
[
{
"year": 2025,
"month": 1,
"type": "femicidio_intimo",
"count": 8
}
]Country → type → relationshipPaís → tipo → relaciónLand → Typ → Beziehung
/api/sankeyCross-tabulation behind the Sankey chart on the statistics page.Tabulación cruzada detrás del diagrama Sankey de la página de estadísticas.Kreuztabelle hinter dem Sankey-Diagramm auf der Statistikseite.
| ParameterParámetroParameter | TypeTipoTyp | DescriptionDescripciónBeschreibung |
|---|---|---|
country | string | Country code: UK, CL, AR, MX, ES or DE.Código de país: UK, CL, AR, MX, ES o DE.Ländercode: UK, CL, AR, MX, ES oder DE. |
Example requestEjemplo de solicitudBeispielanfrage
GET /api/sankey
Example responseEjemplo de respuestaBeispielantwort
[
{
"country": "CL",
"type": "femicidio_intimo",
"relacion": "intimo_ex",
"count": 31
}
]SourcesFuentesQuellen
/api/sources-summaryConfirmed articles per news source and country. Aggregate only.Artículos confirmados por fuente y país. Solo agregados.Bestätigte Artikel pro Nachrichtenquelle und Land. Nur Aggregate.
| ParameterParámetroParameter | TypeTipoTyp | DescriptionDescripciónBeschreibung |
|---|---|---|
country | string | Country code: UK, CL, AR, MX, ES or DE.Código de país: UK, CL, AR, MX, ES o DE.Ländercode: UK, CL, AR, MX, ES oder DE. |
Example requestEjemplo de solicitudBeispielanfrage
GET /api/sources-summary
Example responseEjemplo de respuestaBeispielantwort
{
"CL": {
"Example Source": 120
},
"MX": {
"Another Source": 87
}
}Use casesCasos de usoAnwendungsfälle
Data visualizationVisualización de datosDatenvisualisierung
Use the timeline endpoint to chart monthly counts.Usa el endpoint de línea de tiempo para graficar los conteos mensuales.Mit dem Timeline-Endpunkt lassen sich monatliche Zahlen darstellen.
// JavaScript: monthly counts for a chart
const data = await fetch("https://femicide-watch.up.railway.app/api/timeline").then((r) => r.json());
const labels = data.monthly_counts.map((m) => `${m.year}-${m.month}`);
const counts = data.monthly_counts.map((m) => m.count);
// → plug into Chart.js, D3, Plotly, etc.Research and comparisonInvestigación y comparaciónForschung und Vergleich
Aggregates are complete, so they work for comparative studies across countries.Los agregados están completos, así que sirven para estudios comparativos entre países.Die Aggregate sind vollständig und eignen sich für Vergleichsstudien zwischen Ländern.
# Python: one row per country and month
import requests, pandas as pd
rows = []
for cc in ["UK", "CL", "AR", "MX", "ES", "DE"]:
data = requests.get("https://femicide-watch.up.railway.app/api/timeline", params={"country": cc}).json()
rows += [{"country": cc, **m} for m in data["monthly_counts"]]
df = pd.DataFrame(rows)Daily alertsAlertas diariasTägliche Hinweise
Subscribe to the RSS feed to get each day's confirmed articles:Suscríbete al feed RSS para recibir los artículos confirmados de cada día:Abonnieren Sie den RSS-Feed, um täglich die bestätigten Artikel zu erhalten: /feed.xml