Highlights
Highlights are the core of the NFL & NCAAF API. They cover everything from a single touchdown pass through to full game recaps and pre and post match interviews.
- Refresh interval
- Once a minute
- Plan
- Might have certain restrictions on Basic/Free
- Pagination
- limit and offset
Verified and unverified clips
Clips are aggregated from many different platforms. Depending on the source and what verification it has been through, each one falls into one of two types.
| type | What it means |
|---|---|
VERIFIED |
The clip comes from a reputable source that has been inspected. In most cases the author owns the copyright to the video. Verified highlights are uploaded between 1 and 48 hours after a match finishes. The hosting platform can still impose geo restrictions or block embedding, so check geo restrictions before showing one. |
UNVERIFIED |
The clip may not have been through verification, or is user uploaded. These cover a wider spectrum, including last minute scores, memorable plays and recaps. They are more real time and can appear while the game is still being played. How long they survive depends on the hosting platform. |
Reading a highlight
Every highlight carries a title describing what the video shows. Many also
carry a description that expands on it.
The source field records where the clip was aggregated from, for example
youtube, twitter, reddit or espn.
For some sources a channel is present as well, which is the uploading
channel's title. Together these let you narrow down which videos you want to show.
Where embedUrl is present you can embed the video directly in your own site
or app.
Categories
The category field describes what kind of content the clip contains.
Categorisation happens automatically when a highlight is aggregated. A clip that cannot
be placed confidently is labelled other rather than being forced into a
category it does not belong to, so filtering on category in your own code
will not return unrelated content.
The vocabulary is specific to American football, and it distinguishes scoring plays by how the score happened.
| Category | Contains |
|---|---|
match-highlights |
Edited recap of a match, including full game highlights and summaries in any language. |
touchdown-pass |
Passing touchdown. |
touchdown-rush |
Rushing touchdown. |
touchdown-reception |
Receiving touchdown, with the receiver featured. |
touchdown |
Touchdown where the mechanism is not specified. |
interception |
Interception with no return score. |
interception-return-td |
Pick six, an interception returned for a touchdown. |
fumble |
Fumble or strip sack with no return score. |
fumble-recovery-td |
Fumble recovered and returned for a touchdown. |
sack |
Quarterback sack. |
field-goal |
Field goal attempt. |
safety |
A safety, the two point defensive score. |
special-teams-play |
Punts, kickoffs, returns and other special teams plays. |
special-teams-td |
Kick or punt return touchdown. |
two-point-conversion |
Two point conversion attempt. |
penalty |
Flags, penalties and ejections. |
big-play |
Long gains, key conversions and other significant non scoring plays. |
defensive-play |
Stops, blocked kicks, pass break ups and other defensive plays. |
viral-moment |
Celebrations, mascots, milestones, tributes and other spectacle moments. |
injury |
A player injured on the play, carted or helped off, or exiting the game. |
pre-match-content |
Previews, predictions and build up content ahead of a match. |
post-match-content |
Reactions, interviews and analysis after a match. |
other |
Clips that do not fit any other category. |
Plan coverage
On the Basic plan, NFL highlights are excluded. A Pro plan or higher removes the restriction and returns highlights from every league this API covers.
Querying
At least one primary query parameter must be specified before you can retrieve data.
timezone, limit and offset are secondary and do
not count on their own.
Combine timezone with date to get highlights relevant to your
own location. Filter by league with leagueName, or by game with
matchId. Teams can be filtered by id, name, abbreviation or display name,
so homeTeamAbbreviation works without resolving an id first.
limit sets how many highlights come back. When the number of matching
highlights exceeds it, request the next page by increasing offset. The
pagination object in every response tells you the
totalCount to page through.
Parameters
| Parameter | Type | Description |
|---|---|---|
leagueNameoptional
|
string |
No description in the spec.e.g. NCAA
|
dateoptional |
string |
Date that follows the YYYY-MM-DD format.e.g. 2024-08-31
|
timezoneoptional |
stringdefault Etc/UTC
|
Valid timezone identifier.e.g. Europe/London
|
seasonoptional |
number |
No description in the spec.e.g. 2024
|
matchIdoptional |
number |
No description in the spec.e.g. 49130
|
homeTeamIdoptional
|
number |
No description in the spec.e.g. 92884
|
awayTeamIdoptional
|
number |
No description in the spec.e.g. 92885
|
homeTeamNameoptional
|
string |
No description in the spec.e.g. Boilermakers
|
awayTeamNameoptional
|
string |
No description in the spec.e.g. Sycamores
|
homeTeamAbbreviationoptional
|
string |
No description in the spec.e.g. PUR
|
awayTeamAbbreviationoptional
|
string |
No description in the spec.e.g. INST
|
homeTeamDisplayNameoptional
|
string |
No description in the spec.e.g. Purdue Boilermakers
|
awayTeamDisplayNameoptional
|
string |
No description in the spec.e.g. Indiana State Sycamores
|
limitoptional |
numberdefault 40
|
No description in the spec.e.g. 40
|
offsetoptional |
numberdefault 0
|
No description in the spec.e.g. 0
|
Request
curl --request GET \
--url 'https://american-football.highlightly.net/highlights?leagueName=NCAA&date=2024-08-31' \
--header 'x-rapidapi-key: YOUR_API_KEY'
const params = new URLSearchParams({
leagueName: 'NCAA',
date: '2024-08-31'
})
const response = await fetch(`https://american-football.highlightly.net/highlights?${params}`, {
headers: {
'x-rapidapi-key': process.env.HIGHLIGHTLY_API_KEY
}
})
if (!response.ok) {
throw new Error(`Highlightly responded ${response.status}`)
}
const data = await response.json()
import os
import requests
response = requests.get(
'https://american-football.highlightly.net/highlights',
params={
'leagueName': 'NCAA',
'date': '2024-08-31',
},
headers={
'x-rapidapi-key': os.environ['HIGHLIGHTLY_API_KEY'],
},
timeout=10,
)
response.raise_for_status()
data = response.json()
Response
dataAmericanFootballHighlightResponse[]required41 fields
idnumberrequired
typestringrequired
imgUrlstringPreview picture of the highlight.
titlestringrequired
descriptionstring
urlstringrequiredUrl location of the video highlight.
embedUrlstringUrl of embeddable video highlight.
matchAmericanFootballMatchResponserequired30 fields
idnumberrequired
roundstringrequired
datestringrequired
leaguestringrequired
seasonnumberrequired
awayTeamAmericanFootballMatchTeamResponserequired5 fields
idnumberrequired
logostring
namestring
displayNamestringrequired
abbreviationstringrequired
homeTeamAmericanFootballMatchTeamResponserequired5 fields
idnumberrequired
logostring
namestring
displayNamestringrequired
abbreviationstringrequired
stateAmericanFootballMatchStateResponserequired12 fields
periodnumberCurrent in play period.
clocknumberCurrent minute of the in play period.
descriptionstringrequiredCurrent status/description of the match.SuspendedPostponedCancelledAbandonedFinishedIn progressEnd periodHalf timeUnknownScheduled
scoreAmericanFootballMatchScoreResponserequired7 fields
currentstringHome - Away score for the match.
firstPeriodstringHome - Away score in 1st period.
secondPeriodstringHome - Away score in 2nd period.
thirdPeriodstringHome - Away score in 3rd period.
fourthPeriodstringHome - Away score in 4th period.
firstOvertimePeriodstringHome - Away score in the first overtime period.
secondOvertimePeriodstringHome - Away score in the second overtime period.
reportstringAdditional description of the match state.
channelstringChannel title of a given highlight.
sourcestringAggregation source from social media and other equivalent platforms.
categorystringAssumed highlight category
paginationPaginationResponserequired3 fields
totalCountnumberrequiredAvailable number of items, relevant to the provided query.
offsetnumberrequired
limitnumberrequired
planPlanResponserequired2 fields
tierstringrequiredYour current API subscription tier.
messagestringrequiredExplanation message regarding your current tier.
Example response
{
"data": [
{
"id": 1,
"type": "VERIFIED",
"imgUrl": "https://example.com/images/preview/1.png",
"title": "NFL: New Orleans Saints vs Kansas City Chiefs",
"description": "Game recap of the match.",
"url": "https://example.com/highlight/v23r23fds2cff",
"embedUrl": "https://example.com/embed/v23r23fds2cff",
"match": {
"id": 1,
"round": "Regular Season - 32",
"date": "2023-05-20T15:30:00.000Z",
"league": "NFL",
"season": 2023,
"awayTeam": {
"id": 1,
"logo": "https://example.com/logos/team/111.png",
"name": "Saints",
"displayName": "New Orleans Saints",
"abbreviation": "NO"
},
"homeTeam": {
"id": 1,
"logo": "https://example.com/logos/team/111.png",
"name": "Saints",
"displayName": "New Orleans Saints",
"abbreviation": "NO"
},
"state": {
"period": 2,
"clock": 8,
"description": "In progress",
"score": {
"current": "21 - 7",
"firstPeriod": "0 - 0",
"secondPeriod": "7 - 7",
"thirdPeriod": "7 - 0",
"fourthPeriod": "7 - 0",
"firstOvertimePeriod": "7 - 0",
"secondOvertimePeriod": "7 - 0"
},
"report": "Final"
}
},
"channel": "NFL",
"source": "youtube",
"category": "match-highlights"
}
],
"pagination": {
"totalCount": 490,
"offset": 20,
"limit": 100
},
"plan": {
"tier": "BASIC",
"message": "Some results might be hidden with FREE tier. Check your API coverage for more information: https://rapidapi.com/highlightly-api-highlightly-api-default/api/sport-highlights-api/details"
}
}
Values are the examples declared in the OpenAPI spec, not a captured live response.
Errors
| Status | Description |
|---|---|
400 |
Bad request descriptive error. |
500 |
Internal server error. |