Scouting America API (0.1.0)

Download OpenAPI specification:

Unofficial, community-maintained description of the public Scouting America API at api.scouting.org. Not affiliated with or endorsed by Scouting America. The MIT license applies to this description and repository only, not to the API or its data.

Some list endpoints cache responses without regard to the query string. On those endpoints, send Cache-Control: no-cache or query filters may be ignored.

Advancement

Ranks, merit badges, and other advancement

List merit badges

Returns merit badges. Pass a badge's id to the requirements endpoint to get its requirements. Filters combine with AND. A filter value that matches nothing returns an empty list.

query Parameters
id
string
Examples: id=3

Return only the merit badge with this id

version
string
Examples: version=2019

Return only requirements versions from this year. Badges with no matching version are left out.

status
string
Enum: "active" "inactive"

Which requirements versions to put in versions. active (the default) gives each badge's current version and leaves out discontinued badges. inactive gives past versions, including those of discontinued badges, and leaves out badges with none. Case-sensitive.

header Parameters
Cache-Control
string
Examples: no-cache

Send no-cache for query filters to take effect. Without it, the response may come from a cache that ignores the query string. Other values and Pragma: no-cache don't bypass the cache.

Responses

Response samples

Content type
application/json
{}

Get a merit badge's requirements

Returns the current requirements version for a merit badge. Requirements are a flat list; nest them using parentRequirementId and order them by sortOrder.

path Parameters
meritBadgeId
required
integer >= 1
Examples: 3

Merit badge id from the merit badge list (not bsaNumber)

Responses

Response samples

Content type
application/json
{}

List ranks

Returns ranks across all programs, one item per requirements version. A rank with several versions appears once per version, sharing id but with different versionId. Filters combine with AND. A filter value that matches nothing returns an empty list.

query Parameters
id
string
Examples: id=1

Return only versions of the rank with this id

programId
string
Examples: programId=2

Return only ranks in this program

version
string
Examples: version=2022

Return only requirements versions from this year

status
string
Enum: "active" "inactive"

active returns the current requirements version of each rank (some ranks have two current versions). inactive returns all other versions. Case-sensitive.

header Parameters
Cache-Control
string
Examples: no-cache

Send no-cache for query filters to take effect. Without it, the response may come from a cache that ignores the query string. Other values and Pragma: no-cache don't bypass the cache.

Responses

Response samples

Content type
application/json
{}

Get a rank's requirements

Returns one requirements version of a rank: the newest by default, or the one given by versionId. Requirements are a flat list; nest them using parentRequirementId. Some old versions have no requirements.

path Parameters
rankId
required
integer >= 1
Examples: 1

Rank id from the rank list

query Parameters
versionId
integer >= 1
Examples: versionId=38

A versionId of this rank from the rank list. Defaults to the newest version.

Responses

Response samples

Content type
application/json
{
  • "rankInformation": {
    },
  • "requirements": [
    ]
}

Lookups

Reference lists, such as countries, states, positions, and swimming classifications

List countries

Returns all countries as an array sorted by short. With id, returns that one country as an object instead of an array.

query Parameters
id
integer
Examples: id=616

Return only the country with this id, as a single object rather than an array

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

List states

Returns all US states, DC, territories, and military (APO) codes as an array sorted by short. With id, returns that one state as an object instead of an array.

query Parameters
id
integer
Examples: id=55

Return only the state with this id, as a single object rather than an array

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

List activity categories

Returns all activity categories, including expired ones, as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

List activity types

Returns all activity types as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

List calendar event types

Returns all calendar event types, including expired ones, as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

List positions

Returns all positions, including retired ones, as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List swimming classifications

Returns all swimming classifications as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

List unit time zones

Returns the time zones a unit can be set to, as an array.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

List unit types

Returns all unit types as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

List youth leadership positions

Returns youth leadership positions as an array sorted by id. These are a subset of the positions list, sharing its id values, but with native JSON types: numbers and booleans instead of strings, and null where the positions list has an empty string.

query Parameters
unitTypeId
integer >= 1
Examples: unitTypeId=2

Return only positions for this unit type, with each position's unitTypes narrowed to that one entry. Must be a unit type id from the unit type list; one with no positions returns an empty list. Some positions that list the unit type are still left out, so results can differ from filtering the full list.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List communication classifications

Returns the groups communication types fall into, such as phone and email, as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

List communication types

Returns the kinds of contact entry a person can have, such as a home email or mobile phone, as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

List mobile phone carriers

Returns all mobile phone carriers as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

List phone country codes

Returns all country calling codes for phone numbers as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

List organization positions

Returns the person positions that have not expired, as an array sorted by positionId, with fields renamed and IDs as numbers. Fields match the person position list, except that isKey3 and isPlus3 can be null where that list has false.

query Parameters
organizationType
integer
Enum: 1 2 3 4 5 6 7
Examples: organizationType=4

Organization type id from the organization type list, as a number. Returns only positions whose relationshipTypeId matches. For 6 (Unit), only some of those positions are returned. 7 returns an empty list, and 8 is rejected.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

List organization types

Returns all organization types as an array sorted by name.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

List school grades

Returns all school grades as an array sorted by id. Sort by displayOrder to get grade order, since Kindergarten has id 14.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

List name suffixes

Returns all personal name suffixes as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

List person positions

Returns all person positions, including expired ones, as an array sorted by id. These IDs are separate from the positions list's; that list and the youth leadership positions list link here through akelaPositionId, and the organization position list through positionId.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

Search schools

Returns schools whose name matches name, as an array sorted by name. Filters combine with AND, and a search that matches nothing returns an empty list. At most 100,000 schools are returned.

query Parameters
name
required
string [ 2 .. 50 ] characters
Examples: name=lincoln

Case-insensitive search for schools whose name contains this text. Leading and trailing whitespace is ignored, but counts toward the length limits. % matches any run of characters and _ any single character, so %% matches every school.

state
string >= 2 characters
Examples: state=MI

Return only schools whose stateCode is exactly this value, ignoring case and trailing spaces

city
string [ 3 .. 50 ] characters
Examples: city=ionia

Return only schools whose city contains this text, ignoring case. % and _ are wildcards, as in name.

zip
string [ 3 .. 5 ] characters
Examples: zip=48846

Return only schools whose zip is exactly this value. Matches the stored value, so a ZIP code stored without its leading zero must be given without it.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]

List title prefixes

Returns all personal title prefixes as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    },
  • {
    },
  • {
    }
]

List renewal opt-out reasons

Returns all reasons a member can give for not renewing their registration, as an array sorted by id.

Responses

Response samples

Content type
application/json
[
  • {
    },
  • {
    }
]