Documentación del API

Esta documentación del API de OpenDay explica cada endpoint con un ejemplo real. Todas las respuestas tienen la forma { data, meta }; las fechas son AAAA-MM-DD.

Última verificación: 16 de octubre de 2026Fuentes y metodología¿Encontró un error? Avísenos

Primeros pasos

  1. Abra OpenDay API en Apify e inicie sesión (o cree una cuenta gratis en Apify).
  2. Llámelo como API HTTP (modo Standby) con su token de Apify en el encabezado Authorization: Bearer, o envíe hasta 1,000 solicitudes en una corrida.
  3. Se paga por cada solicitud exitosa; los errores nunca se cobran.

Regiones: US (federal y banca), PR (gobierno, legal y banca) y los 50 estados y DC como US-XX. Años: 2000–2100 para EE. UU. y Puerto Rico; 2026–2100 para los estados.

Ejemplos de código

const url = 'https://jbstudio--openday-api.apify.actor/v1/is-business-day?date=2027-07-05&region=PR';
const res = await fetch(url, {
  headers: { Authorization: 'Bearer ' + process.env.APIFY_TOKEN },
});
const { data } = await res.json();
console.log(data.isBusinessDay); // false
import os, requests

url = "https://jbstudio--openday-api.apify.actor/v1/business-days/add"
params = {"start": "2027-12-10", "days": 10, "region": "US", "calendar": "banking"}
headers = {"Authorization": f"Bearer {os.environ['APIFY_TOKEN']}"}
print(requests.get(url, params=params, headers=headers).json()["data"]["result"])  # 2027-12-24

Endpoints

GET/v1/holidays · Lista de feriados

Los feriados de una región y un año. Parámetros: country (US, PR, US-TX, …), year y, opcionales, calendar (federal, banking, government, legal, state), dateBasis (actual u observed) e include.

GET /v1/holidays?country=US&year=2027

{
  "data": [
    {
      "id": "new-years-day",
      "date": "2027-01-01",
      "observedDate": "2027-01-01",
      "nameEn": "New Year's Day",
      "nameEs": "Año Nuevo",
      "type": "federal",
      "source": "5 U.S.C. 6103",
      "sourceUrl": "https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title5-section6103",
      "sourceType": "official"
    },
    {
      "id": "martin-luther-king-jr-day",
      "date": "2027-01-18",
      "observedDate": "2027-01-18",
      "nameEn": "Martin Luther King Jr. Day",
      "nameEs": "Natalicio de Martin Luther King Jr.",
      "type": "federal",
      "source": "5 U.S.C. 6103",
      "sourceUrl": "https://uscode.house.gov/view.xhtml?req=granuleid:USC-prelim-title5-section6103",
      "sourceType": "official"
    }
  ],
  "meta": {
    "calendar": "federal",
    "verificationStatus": "official",
    "note": "Confirm official proclamations."
  }
}

Pruébalo en Apify →

GET/v1/is-business-day · ¿Es día laborable?

¿Esta fecha es día laborable en el calendario de la región? La respuesta incluye cada feriado observado ese día.

GET /v1/is-business-day?date=2027-07-05&region=PR

{
  "data": {
    "date": "2027-07-05",
    "region": "PR",
    "calendar": "government",
    "isBusinessDay": false,
    "reason": "holiday",
    "holidays": [
      {
        "id": "independence-day",
        "date": "2027-07-04",
        "observedDate": "2027-07-05",
        "nameEn": "US Independence Day",
        "nameEs": "Día de la Independencia de los Estados Unidos"
      }
    ]
  }
}

Pruébalo en Apify →

GET/v1/business-days/add · Sumar días laborables

Avanza (o retrocede, con un número negativo) N días laborables. No se cuenta la fecha inicial.

GET /v1/business-days/add?start=2027-12-10&days=10&region=US&calendar=banking

{
  "data": {
    "start": "2027-12-10",
    "days": 10,
    "region": "US",
    "calendar": "banking",
    "result": "2027-12-24"
  }
}

Pruébalo en Apify →

GET/v1/business-days/between · Contar días laborables entre fechas

Días laborables desde start hasta end, ambos incluidos. Negativo si end es anterior a start.

GET /v1/business-days/between?start=2027-01-01&end=2027-01-31&region=US-TX

{
  "data": {
    "start": "2027-01-01",
    "end": "2027-01-31",
    "region": "US-TX",
    "calendar": "state",
    "businessDays": 19,
    "inclusive": true
  }
}

Pruébalo en Apify →

GET/v1/regions · Regiones disponibles

Cada región con sus calendarios, años disponibles, fuentes y estado de verificación por año.

GET /v1/regions

{
  "data": [
    {
      "code": "PR",
      "name": "Puerto Rico",
      "defaultCalendar": "government",
      "years": {
        "min": 2000,
        "max": 2100
      }
    }
  ]
}

Pruébalo en Apify →

GET/v1/pr/municipios · Municipios de Puerto Rico

Los 78 municipios con su código del Censo, nombre oficial (con acentos), nombre sin acentos y slug. /v1/pr/municipios/{id} busca uno por código o nombre, con o sin acentos.

GET /v1/pr/municipios/mayaguez

{
  "data": {
    "code": "72097",
    "name": "Mayagüez",
    "nameAscii": "Mayaguez",
    "slug": "mayaguez"
  },
  "meta": {
    "dataset": "pr-municipios",
    "verificationStatus": "official"
  }
}

Pruébalo en Apify →

GET/v1/pr/zip/{zip} · Código postal a municipio

Cada municipio que cubre un código postal, con su parte del área terrestre y el principal marcado. Basado en las ZCTA del Censo 2020, que se aproximan mucho a los códigos postales del USPS.

GET /v1/pr/zip/00680

{
  "data": {
    "zip": "00680",
    "municipios": [
      {
        "code": "72097",
        "name": "Mayagüez",
        "share": 0.9415,
        "primary": true
      },
      {
        "code": "72125",
        "name": "San Germán",
        "share": 0.0343,
        "primary": false
      },
      {
        "code": "72011",
        "name": "Añasco",
        "share": 0.0241,
        "primary": false
      }
    ]
  }
}

Pruébalo en Apify →

GET/v1/pr/ivu · Tasas del IVU de Puerto Rico

Tasas del impuesto sobre ventas y uso con la sección del Código de Rentas Internas de cada una: estatal 10.5 %, municipal 1 %, total 11.5 % y 4 % en servicios a otros comerciantes y servicios profesionales designados. Información general, no asesoría contributiva.

GET /v1/pr/ivu

{
  "data": {
    "rates": [
      {
        "id": "state",
        "percent": 10.5,
        "components": [
          {
            "percent": 6,
            "citation": "Código de Rentas Internas de 2011, Sec. 4020.01(b)"
          },
          {
            "percent": 4.5,
            "citation": "Código de Rentas Internas de 2011, Sec. 4210.01(b) (surcharge, \"sobretasa\")"
          }
        ]
      },
      {
        "id": "municipal",
        "percent": 1,
        "components": [
          {
            "percent": 1,
            "citation": "Código de Rentas Internas de 2011, Sec. 6080.14(a)"
          }
        ]
      }
    ]
  }
}

Pruébalo en Apify →

Errores

Los parámetros inválidos devuelven 400 VALIDATION_ERROR con la lista de parámetros a corregir. Las rutas, municipios o códigos postales desconocidos devuelven 404 NOT_FOUND. Si se alcanza su límite de gasto en Apify, el API devuelve 402 LIMIT_REACHED.

Los resultados salen de la ley y de calendarios publicados, y pueden diferir de la proclama de un año específico. Cada respuesta lo indica en meta.note.

Preguntas frecuentes

¿Cómo sé si una fecha es día laborable en JavaScript?

Llame a /v1/is-business-day con la fecha y la región (por ejemplo, PR) y lea data.isBusinessDay. El ejemplo de arriba usa fetch con su token de Apify.

¿Cómo calculo una fecha de pago o de entrega en días laborables?

Use /v1/business-days/add con la fecha inicial, el número de días y el calendario (federal, banking, government o state). Para liquidación ACH use calendar=banking.

¿Qué formato tienen las respuestas?

JSON con la forma { data, meta }. Los errores tienen la forma { error: { code, message, details } } y las fechas son AAAA-MM-DD sin hora ni zona horaria.