Skip to content

Scholarships ​

Call scholarships.list to fetch matches and scholarships.byId to load one scholarship. Send Authorization: Bearer <token> with both queries. Owlflow calculates eligibility from the student's profile.

A page of matches ​

Use first to set the page size; the default is 20. While pageInfo.hasNextPage is true, pass the previous response's pageInfo.endCursor as after. The totalCount and totalAmount fields describe all scholarships that match the filters, not only the current 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
  }
}

scholarships.list returns the matching data that scholarships.net uses. amount is the primary award. amounts contains every award amount. awards reports how many winners the scholarship funds.

The capUrgency field is critical, warning, or safe, based on how close applicationCount is to applicationCap. The credibilityLevel field is HIGH, MEDIUM, LOW, or VERIFIED.

The status field is PUBLISHED, EXPIRED, CANCELED, CANCELED_AND_EXPIRED, UNPUBLISHED, or UNPROCESSABLE. Filter by isActive: true to return scholarships that are still accepting applications.

Use requirementSummary to display concise labels such as "Essay" or "2 Documents" on a scholarship card. Request the full viewer.requirements collection only when loading the detail page.

Filters ​

Combine any of these filters. Owlflow ignores omitted filters.

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.

Use scholarships.list with isSaved, isIgnored, or isSubmitted to build these views:

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

Sort with sort: [{ "field": "DEADLINE", "direction": "ASC" }]. The sort.field values are DEADLINE, AMOUNT, TITLE, CREDIBILITY_SCORE, REQUIREMENT_COUNT, APPLICATION_COUNT, RELEVANCE, and RECOMMENDED. Set capBasedSortEnabled: true to apply the default matches order.

See the student flow for a complete search example.

One scholarship ​

Request viewer.requirements on the detail page rather than in the list. Each entry contains requirement and, when the student has saved an answer, applicationRequirement.

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 contains the qualification rules. Display description to the student. For enum rules, enumValues lists the profile values that pass. operator tells you how Core evaluates the rule: IN, BETWEEN, GREATER_THAN, LESS_THAN, BOOLEAN, or another supported comparison.

viewer.requirementProgress.progress ranges from 0 to 100 and is null when the scholarship has no requirements. Treat the application as complete when allMandatoryRequirementsCompleted is true. See Apply.

scholarships.byId returns null when Owlflow finds no scholarship for the supplied ID.

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" }

Set action to SAVE, UNSAVE, IGNORE, UNIGNORE, FAVORITE, or UNFAVORITE. Owlflow returns the updated viewer flags. Use them to update the interface and filter later list queries.

Owlflow partner API