Femicide Media Watch
Tracking femicide in the mediaRastreando el femicidio en los medios
HomeInicio DocumentationDocumentación ArchiveArchivo StatisticsEstadísticas
API

REST API

Public JSON API — no authentication required. All data reflects human-confirmed articles only.API JSON pública — no requiere autenticación. Todos los datos reflejan solo artículos confirmados por humanos.

Base URL: http://femicide-watch.up.railway.app

ArticlesArtículos

GET /api/articles Paginated confirmed articlesArtículos confirmados paginados
ParameterTypeRequiredDescription
countrystringoptionalFilter by country code: UK, CL, AR, MX, ES
pageintegeroptionalPage number, default 1
yearintegeroptionalFilter by year, e.g. 2025
monthintegeroptionalFilter by month 1–12 (requires year)
typestringoptionalFemicide type, e.g. femicidio_intimo, femicidio_familiar
relacionstringoptionalVictim-perpetrator relationship, e.g. intimo_actual, intimo_ex
motivostringoptionalMotive, e.g. rechazo_separacion, violencia_habitual

Example request

GET http://femicide-watch.up.railway.app/api/articles?country=CL&year=2025&page=1

Example response

{ "total": 258, "page": 1, "per_page": 20, "items": [ { "id": 1842, "title": "Femicidio en Osorno: decretan prisión preventiva contra imputado", "web_url": "https://www.latercera.com/...", "published_date": "2025-03-14", "country": "CL", "source": "La Tercera", "snippet": "El tribunal decretó prisión preventiva...", "thumbnail": "https://...", "femicide_type": "femicidio_intimo", "femicide_relacion": "intimo_ex", "femicide_motivo": "rechazo_separacion" }, // ... 19 more items ] }
Loading...

TimelineLínea de tiempo

GET /api/timeline Monthly article counts for chartsConteos mensuales de artículos para gráficos

Returns monthly confirmed article counts — useful for building time series charts.

Example request

GET http://femicide-watch.up.railway.app/api/timeline

Example response

{ "total": 831, "date_range": { "first": "2022-01-03", "last": "2026-02-25" }, "monthly_counts": [ { "year": 2025, "month": 1, "count": 24 }, { "year": 2025, "month": 2, "count": 19 }, // ... ] }
Loading...

Femicide TypesTipos de femicidio

GET /api/types Count of articles by femicide typeConteo de artículos por tipo de femicidio
ParameterTypeRequiredDescription
countrystringoptionalFilter by country code: UK, CL, AR, MX, ES

Example request

GET http://femicide-watch.up.railway.app/api/types?country=CL

Example response

[ { "type": "femicidio_intimo", "count": 142 }, { "type": "femicidio_familiar", "count": 38 }, // ... ]
Loading...

RelationshipsRelaciones

GET /api/relaciones Count of articles by victim-perpetrator relationshipConteo de artículos por relación víctima-agresor
ParameterTypeRequiredDescription
countrystringoptionalFilter by country code: UK, CL, AR, MX, ES

Example request

GET http://femicide-watch.up.railway.app/api/relaciones

Example response

[ { "relacion": "intimo_actual", "count": 98 }, { "relacion": "intimo_ex", "count": 67 }, // ... ]
Loading...

MotivesMotivos

GET /api/motivos Count of articles by motiveConteo de artículos por motivo
ParameterTypeRequiredDescription
countrystringoptionalFilter by country code: UK, CL, AR, MX, ES

Example request

GET http://femicide-watch.up.railway.app/api/motivos?country=UK

Example response

[ { "motivo": "rechazo_separacion", "count": 45 }, { "motivo": "violencia_habitual", "count": 32 }, // ... ]
Loading...

Types by MonthTipos por mes

GET /api/types-by-month Monthly breakdown of femicide typesDesglose mensual de tipos de femicidio

Returns femicide type counts broken down by month — useful for stacked bar charts or trend analysis.

ParameterTypeRequiredDescription
countrystringoptionalFilter by country code: UK, CL, AR, MX, ES

Example request

GET http://femicide-watch.up.railway.app/api/types-by-month

Example response

[ { "year": 2025, "month": 1, "type": "femicidio_intimo", "count": 8 }, // ... ]
Loading...

What you can buildQué puedes construir

Monitor femicide coverage by countryMonitorear cobertura de femicidio por país

Fetch all confirmed articles for a specific country and date range to track media coverage over time. Useful for NGOs, journalists, and researchers monitoring reporting trends.

# Get all 2025 articles from Chile fetch('http://femicide-watch.up.railway.app/api/articles?country=CL&year=2025') .then(r => r.json()) .then(data => console.log(`${data.total} articles in ${Math.ceil(data.total/20)} pages`))

Research & academic analysisInvestigación y análisis académico

Export the full dataset for corpus analysis, NLP research, or comparative studies across countries. All articles include publication date, source, country, and snippet text.

# Python: collect all pages into a DataFrame import requests, pandas as pd articles = [] page = 1 while True: r = requests.get(f'http://femicide-watch.up.railway.app/api/articles?country=CL&page={page}').json() articles.extend(r['items']) if page * r['per_page'] >= r['total']: break page += 1 df = pd.DataFrame(articles) df.to_csv('femicidio_chile.csv', index=False)

Daily alert systemSistema de alertas diarias

Poll the API daily to detect new confirmed articles and trigger alerts. Useful for building notification systems for advocacy organizations.

# Get today's confirmed articles from datetime import date import requests today = date.today() r = requests.get( f'http://femicide-watch.up.railway.app/api/articles', params={'country': 'CL', 'year': today.year, 'month': today.month} ).json() todays = [a for a in r['items'] if a['published_date'] == str(today)] print(f"Today: {len(todays)} confirmed articles")

Data visualizationVisualización de datos

Use the timeline endpoint to build charts showing monthly case counts. The data powers the timeline chart on the homepage.

// JavaScript: build a Chart.js bar chart const data = await fetch('http://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.