Skip to content

Feriados

GET
/v1/feriados/{año}

Devuelve los feriados del año indicado (o del año actual si no se especifica).

Parámetros

Path Parameters

año*

Año de consulta

Tipointeger
Requerido
Ejemplo2025
minimum2016
maximum2025

Respuestas

Devuelve los feriados del año actual
application/json
JSON
[
{
"fecha": "string",
"tipo": "string",
"nombre": "string"
}
]

Playground

Variables
Key
Value

Ejemplos

Powered by VitePress OpenAPI

Ejemplos de uso

Próximos feriados

Feriados del año

Calendario por mes

js
async function getData() {
    const data = await fetch('https://api.argentinadatos.com/v1/feriados').then((res) => res.json())

    const colorsMap = {
        inamovible: '#f97316',
        trasladable: '#3b82f6',
        puente: '#22c55e',
    }
  
    const allDays = []
  
    const startDate = new Date(data[0].fecha)
    const endDate = new Date(startDate.getUTCFullYear(), 11, 31)
  
    for (let i = startDate.getUTCDay(); i > 0; i--) {
        const date = new Date(startDate)
        date.setDate(startDate.getDate() - i)
      
        allDays.push({
            fecha: date.toISOString().slice(0, 10),
            nombre: "",
            tipo: '',
            diaSemana: date.getUTCDay(),
            mes: startDate.getUTCMonth(),
            año: startDate.getUTCFullYear(),
            color: '#fff',
            colorTexto: '#000',
            semanaAño: 1,
            semanaMes: 1,
        })
    }
  
    while (startDate <= endDate) {
      const diaFeriado = data.find((d) => d.fecha === startDate.toISOString().slice(0, 10))
    
      const finSemana = startDate.getUTCDay() === 0 || startDate.getUTCDay() === 6
      
      const semana = Math.ceil((startDate - new Date(startDate.getUTCFullYear(), 0, 1)) / 86400000 / 7)
      
      const semanaMes = (date) => {
        const firstDay = new Date(date.getUTCFullYear(), date.getUTCMonth(), 1)
        return Math.ceil((date.getUTCDate() + firstDay.getUTCDay()) / 7)
      }
      
      const x = Math.ceil((allDays.length + 1) / 7)
      
      if (diaFeriado) {
          allDays.push({
            fecha: startDate.toISOString().slice(0, 10),
            nombre: data.find((d) => d.fecha === startDate.toISOString().slice(0, 10)).nombre,
            tipo: data.find((d) => d.fecha === startDate.toISOString().slice(0, 10)).tipo,
            diaSemana: startDate.getUTCDay(),
            semana: semana,
            mes: startDate.getUTCMonth(),
            año: startDate.getUTCFullYear(),
            color: colorsMap[diaFeriado.tipo],
            colorTexto: '#fff',
            semanaAño: x,
            semanaMes: semanaMes(startDate),
          })
        } else {
          allDays.push({
            fecha: startDate.toISOString().slice(0, 10),
            nombre: "",
            tipo: '',
            diaSemana: startDate.getUTCDay(),
            semana: semana,
            mes: startDate.getUTCMonth(),
            año: startDate.getUTCFullYear(),
            color: finSemana ? '#6b7280' : '#e5e7eb',
            colorTexto: finSemana ? '#fff' : '#000',
            semanaAño: x,
            semanaMes: semanaMes(startDate),
          })
        }
        
        startDate.setDate(startDate.getDate() + 1)
    }
    
    for (let i = 1; i < 7 - endDate.getUTCDay(); i++) {
        const date = new Date(endDate)
        date.setDate(endDate.getDate() + i)
      
        allDays.push({
            fecha: date.toISOString().slice(0, 10),
            nombre: "",
            tipo: '',
            diaSemana: date.getUTCDay(),
            mes: allDays[allDays.length - 1].mes,
            año: date.getUTCFullYear(),
            color: '#fff',
            colorTexto: '#000',
            semanaAño: allDays[allDays.length - 1].semanaAño,
            semanaMes: allDays[allDays.length - 1].semanaMes,
        })
    }
    
    return allDays.map((d, index) => {
        d.diaAnio = index
        d.mesNombre = new Date(d.año, d.mes, 1).toLocaleString('es-ES', { month: 'long' })
        return d
    })
}
js
(async () => {
  const data = await getData()
  
  const dark = document.documentElement.classList.contains('dark')
  
  const today = new Date().toISOString().slice(0, 10)
  
  return Plot.plot({
    width: 350,
    marginRight: 100,
    padding: 0,
    x: {
      axis: 'top',
      label: "Semana del mes",
      labelOffset: 30
    },
    y: {
      tickFormat: Plot.formatWeekday("es", "narrow"), 
      tickSize: 0,
      label: "Día de la semana"
    },
    facet: {
      data: data,
      y: d => d.mes,
      label: null
    },
    fy: {
      tickFormat: d => new Date(0, d, 1).toLocaleString('es-ES', { month: 'long' }),
      labelAnchor: "center"
    },
    marks: [
      Plot.cell(data, {
        x: d => d.semanaMes,
        y: d => d.diaSemana,
        fill: d => d.color,
        stroke: d => d.fecha === today ? "#8b5cf6" : d.color,
        strokeWidth: d => d.fecha === today ? 3 : 0,
        tip: {
          format: {
            fecha: d => new Date(d).toLocaleDateString('es-ES', {weekday: 'long', year: 'numeric', month: 'long', day: 'numeric'}),
            nombre: true,
            tipo: true,
            x: d => `Semana ${d}`,
            y: d => new Date(0, 0, d).toLocaleString('es-ES', { weekday: 'long' }),
            fy: d => new Date(0, d, 1).toLocaleString('es-ES', { month: 'long' }),
            stroke: false,
            strokeWidth: false,
          }
        },
      }),
      Plot.text(data, {
        x: d => d.semanaMes,
        y: d => d.diaSemana,
        text: d => d.fecha.slice(8, 10),
        fill: d => d.colorTexto,
        align: 'center',
        baseline: 'middle',
        fontSize: 12,
        fontWeight: d => d.fecha === today ? "bold" : "normal"
      }),
    ],
  })
})()