Skip to content

Scholarships ​

Every list and detail call is for the signed-in student. Send Authorization: Bearer <token>. Eligibility uses the profile. An empty profile returns a shorter list.

A page of matches ​

first is the page size. The default is 20. Pass after from the previous page's pageInfo.endCursor while hasNextPage is true. totalCount and totalAmount describe the whole filtered set, not just this page.

graphql
query Matches($first: Int!, $after: String, $filters: ScholarshipFilters) {
  scholarships {
    list(filters: $filters, pagination: { first: $first, after: $after }) {
      totalCount
      totalAmount
      pageInfo { hasNextPage endCursor }
      nodes {
        id
        title
        amount
        amounts
        awards
        deadline
        status
        isEasy
        applicationCap
        applicationCount
        capUrgency
        credibilityScore
        credibilityLevel
        requirementSummary { type count label }
        organization { id name }
        provider { name }
        viewer { isEligible isSaved isIgnored isFavorite }
      }
    }
  }
}
json
{
  "first": 20,
  "filters": {
    "isEligible": true,
    "isActive": true,
    "capBasedSortEnabled": true
  }
}

This is the matches list scholarships.net shows. amount is the primary award. amounts is the full set of award amounts. awards is how many winners are funded.

capUrgency is critical, warning, or safe, from how close applicationCount is to applicationCap. credibilityLevel is HIGH, MEDIUM, LOW, or VERIFIED.

status is PUBLISHED, EXPIRED, CANCELED, CANCELED_AND_EXPIRED, UNPUBLISHED, or UNPROCESSABLE. An active list is scholarships the student can still apply to.

requirementSummary is enough for a card ("Essay", "2 Documents"). Load viewer.requirements only on the detail page.

Filters ​

Combine any of these. Omitted filters are not applied.

FilterUse it for
isEligibleScholarships this profile qualifies for.
isActiveStill open.
isEasyFew requirements.
searchText match on the scholarship.
stateState codes, such as ["CALIFORNIA"].
schoolLevelSame school-level values as the profile.
degree, fieldOfStudyDegree and field of study values.
gender, ethnicity, militaryAffiliationProfile enum values.
gpa{ "min": 3, "max": 4 }.
age{ "min": 17, "max": 24 }.
minAmount, maxAmountAward size.
deadlineAfter, deadlineBeforeISO-8601 timestamps.
categoriesCategory names.
credibilityLevelHIGH, MEDIUM, LOW, VERIFIED.
minCredibilityScoreNumeric credibility floor.
maxRequirementsHide scholarships with more requirements than this.
requirementTypes{ "mode": "INCLUDE", "types": ["SURVEY"] } or EXCLUDE. Types are INPUT, TEXT, SURVEY, SPECIAL_ELIGIBILITY, FILE, IMAGE, GOAL.
isSaved, isIgnored, isFavoriteLists the student marked.
isStarted, isSubmitted, hasApplicationApplication progress.
isSeenWhether the student has opened it.
organizationIdLimit to providers you already know.

Saved, ignored, and submitted screens are the same query with a different filter:

json
{ "filters": { "isSaved": true, "isActive": true } }
json
{ "filters": { "isIgnored": true } }
json
{ "filters": { "isSubmitted": true } }

Sort with sort: [{ "field": "DEADLINE", "direction": "ASC" }]. Fields include DEADLINE, AMOUNT, TITLE, CREDIBILITY_SCORE, REQUIREMENT_COUNT, APPLICATION_COUNT, RELEVANCE, and RECOMMENDED. capBasedSortEnabled: true is the default matches order and can be combined with those filters.

A worked search is in the student flow.

One scholarship ​

Request viewer.requirements here, not on the list. Each entry is the requirement definition plus the student's saved answer, when they have one.

graphql
query ScholarshipDetail($id: ID!) {
  scholarships {
    byId(id: $id) {
      id
      title
      amount
      amounts
      awards
      deadline
      startDate
      description
      shortDescription
      status
      isEasy
      applicationCap
      applicationCount
      capUrgency
      credibilityScore
      credibilityLevel
      payoutMethod
      url
      termsOfServiceUrl
      winnerAnnouncementDate
      organization { id name website logoUrl }
      provider { name website logoUrl }
      eligibilities { id field { name } operator value enumValues description isOptional }
      viewer {
        isEligible
        isSaved
        isIgnored
        isFavorite
        hasApplication
        hasSubmitted
        allMandatoryRequirementsCompleted
        requirementProgress { completed progress }
        application { id dateApplied }
        requirements {
          id
          requirement {
            id
            type
            name
            title
            description
            isOptional
            ... on RequirementText {
              minWords
              maxWords
              minCharacters
              maxCharacters
              allowFile
              allowedExtensions
              maxFileSize
              essayTopics { id topic }
            }
            ... on RequirementInput { description config value }
            ... on RequirementFile { allowedExtensions maxFileSize fileType }
            ... on RequirementImage {
              allowedFormats
              maxFileSize
              minWidth
              maxWidth
              minHeight
              maxHeight
            }
            ... on RequirementSurvey {
              questions { id text description type required options { label value } }
            }
            ... on RequirementGoal { link variant }
            ... on RequirementSpecialEligibility { specialEligibilityValue }
          }
          applicationRequirement {
            id
            ... on ApplicationText { text }
            ... on ApplicationInput { text }
            ... on ApplicationSurvey { answers { questionId options } }
            ... on ApplicationFile { file { name originalName } }
            ... on ApplicationImage { file { name originalName } }
            ... on ApplicationGoal { payload }
            ... on ApplicationSpecialEligibility { specialEligibilityValue }
          }
        }
      }
    }
  }
}

eligibilities is the rule list to show on the page. enumValues is the set of profile values that pass a vocabulary rule. description is the sentence for the student. operator is IN, BETWEEN, GREATER_THAN, LESS_THAN, BOOLEAN, and the other comparisons.

viewer.requirementProgress.progress is 0–100, or null when the scholarship has no requirements. allMandatoryRequirementsCompleted is the flag to treat the application as finished. See Apply.

byId returns null when the id does not exist.

Save, ignore, favorite ​

graphql
mutation UpdateStatus($scholarshipId: ID!, $action: ScholarshipAction!) {
  scholarships {
    updateStatusV2(action: $action, scholarshipId: $scholarshipId) {
      scholarship {
        id
        viewer { isSaved isIgnored isFavorite }
      }
    }
  }
}
json
{ "scholarshipId": "12345", "action": "SAVE" }

action is SAVE, UNSAVE, IGNORE, UNIGNORE, FAVORITE, or UNFAVORITE. The returned viewer flags are what the lists filter on.

Owlflow partner API