openapi: 3.0.0 info: version: 1.0.0 title: Credit Card Bonuses description: Publicly available API for Credit Card Bonus information. servers: - url: https://raw.githubusercontent.com/andenacitelli/credit-card-bonuses-api/main/exports paths: /data.json: get: security: [] operationId: getJsonData summary: Get current card data in JSON format. responses: "200": description: Object with generated text. content: application/json: schema: type: array items: $ref: "#/components/schemas/CreditCard" /data.csv: get: security: [] operationId: getCsvData summary: Get current card data in CSV format. responses: "200": description: CSV-formatted string of card data. content: text/csv: schema: type: string description: CSV-formatted string of offer data. Only includes current offers. Each offer has its own line. Columns are -- name,issuer,network,currency,offerAmount,offerSpend,offerDays,offerUrl,countsTowards524,details,isBusiness,annualFee,isAnnualFeeWaived,universalCashbackPercent,url,imageUrl,credits /data.yaml: get: security: [] operationId: getYamlData summary: Get current card data in YAML format. responses: "200": description: YAML-formatted string of card data. content: text/yaml: schema: type: string description: YAML-formatted string of offer data. Only includes current offers. Each offer has its own line. Columns are -- name,issuer,network,currency,offerAmount,offerSpend,offerDays,offerUrl,countsTowards524,details,isBusiness,annualFee,isAnnualFeeWaived,universalCashbackPercent,url,imageUrl,credits components: schemas: # --- Components --- # Credit: type: object properties: description: type: string description: A brief description for what the credit is for. example: "Statement Credit" minLength: 1 value: type: number description: The face value of the credit. Note that there is another attribute, `weight`, that we generally multiply this by to get how much the credit as "actually" worth. This is the original, at-a-glance value. example: 100 weight: type: number description: The weight of the credit. This is a multiplier that we use to determine how much the credit is actually worth. For example, a 1.0 weight means that the credit is very easy to actually use. A .25 weight means the credit is very difficult to use and should be valued around 25% of its face value. example: 0.5 minimum: 0 maximum: 1 currency: $ref: "#/components/schemas/CurrenciesEnum" required: - description - value - weight Expiration: type: string format: date # YYYY-MM-DD description: The last day that the offer is valid, in YYYY-MM-DD format. example: 2024-06-01 Offer: type: object properties: spend: type: number description: Spend required to earn the bonus, in USD. minimum: 0 example: 1000 amount: type: array items: $ref: "#/components/schemas/OfferAmount" days: type: number description: Days required to earn the bonus. minimum: 30 example: 90 expiration: $ref: "#/components/schemas/Expiration" isPublic: type: boolean description: Whether the offer is publicly available. A value of `true` indicates it's public. A value of `false` indicates it's a targeted offer. credits: type: array items: $ref: "#/components/schemas/Credit" default: [] details: type: string description: Additional relevant details about the offer. Generally only provided if there's things you should know outside of initial face value. url: type: string description: A URL that takes you directly to the offer. example: https://example.com referralUrl: type: string description: If the creator of this API has this card and can refer you, this field will be populated with a link to that. Please consider using it if you'd like to support the creator. Thank you! required: - spend - amount - days - credits OfferAmount: type: object description: The amount of the offer. No currency provided means it's the same currency as the card. properties: amount: type: number example: 100 currency: $ref: "#/components/schemas/CurrenciesEnum" required: - amount CreditCard: type: object properties: cardId: type: string description: A unique identifier for this card. Basically a primary key. example: "7501f96ab2cfc952c2ef9119" minLength: 1 name: type: string description: The name of the card. Does not include the issuer. example: "Freedom Flex" minLength: 1 issuer: $ref: "#/components/schemas/IssuersEnum" network: $ref: "#/components/schemas/NetworksEnum" currency: $ref: "#/components/schemas/CurrenciesEnum" countsTowards524: type: boolean description: Whether this card counts towards the 5/24 rule. This field is generally only included if its an exception to the rule provided on TPG's overview page @ https://thepointsguy.com/guide/ultimate-guide-chase-5-24-rule/ details: type: string description: Additional relevant details about the card. Usually not provided. isBusiness: type: boolean description: Whether this card is a business card. annualFee: type: number description: The annual fee of the card, in USD. isAnnualFeeWaived: type: boolean description: Whether the annual fee is waived for the first year. universalCashbackPercent: type: number description: The universal cashback percent of the card. A value of 1.5 corresponds to 1.5%. This is the percent that you earn on all purchases, regardless of category. minimum: 1 maximum: 100 example: 1.5 url: type: string description: The URL of the card's main webpage. imageUrl: type: string description: A URL to an image of the card. Prefix with "https://offeroptimist.com" to get a full, valid URL. example: /images/chase/freedom-flex.png credits: type: array items: $ref: "#/components/schemas/Credit" default: [] offers: type: array items: $ref: "#/components/schemas/Offer" default: [] historicalOffers: type: array description: An array of the best recent historical offers for the card. We define "recent" as within the last three years or so. items: $ref: "#/components/schemas/Offer" default: [] discontinued: type: boolean description: Whether the card has been discontinued. default: false required: - cardId - name - issuer - network - currency - isBusiness - annualFee - isAnnualFeeWaived - universalCashbackPercent - url - imageUrl - credits - offers - historicalOffers - discontinued # --- Enums --- # CurrenciesEnum: type: string enum: - BEST_WESTERN - BREEZE - HILTON - HYATT - IHG - MARRIOTT - RADISSON - WYNDHAM - CHOICE - AEROPLAN - ALASKA - AMERICAN - ANA - AVIANCA - AVIOS - CATHAY_PACIFIC - DELTA - EMIRATES - FRONTIER - FLYING_BLUE - HAWAIIAN - JETBLUE - KOREAN - LATAM - LUFTHANSA - SOUTHWEST - SPIRIT - UNITED - VIRGIN - AMERICAN_EXPRESS - BANK_OF_AMERICA - BARCLAYS - BILT - BREX - CHASE - CITI - CAPITAL_ONE - DISCOVER - US_BANK - WELLS_FARGO - CARNIVAL - AMTRAK - PENFED - EXPEDIA - USD IssuersEnum: type: string enum: - AMERICAN_EXPRESS - BANK_OF_AMERICA - BARCLAYS - BREX - CHASE - CAPITAL_ONE - CITI - COMENITY - DISCOVER - FIRST - FNBO - PENFED - PNC - SYNCHRONY - US_BANK - WEB_BANK - WELLS_FARGO NetworksEnum: type: string enum: - VISA - MASTERCARD - AMERICAN_EXPRESS - DISCOVER