Upgrading to School Profile V4

Introduction

ATTOM is pleased to announce a significant enhancement to the school data available via ATTOM API brought about by switching to a new source already being used by other ATTOM products. Because we are making what we consider a breaking change to the endpoints, they are being deployed as a new version. This provides us with the opportunity of merging two endpoints (School Details and School Snapshot) into a single endpoint (School Profile)

  • We have moved to a new source for school data that increases the amount and quality of data we can make available in ATTOM API. The small subset of school data made available in this endpoint has been updated to the new source.
  • IDs used to reference the schools in the earlier version have been updated to adopt ATTOM's new geocode standard (geoIdV4)

These are considered breaking changes and customers are encouraged to modify applications to use the new versions of these endpoints on or before June 30, 2023.

New Data

School Profile

The new version of the school profile endpoint adds 125 new fields, including:

  • AP classes available (high schools)
  • Enrollment by race
  • Free lunch programs offered
  • Religious (and other) affiliations of private schools

New Endpoint

School Search

Searches for schools located within:

  • Specific geography (geoIdV4) such as a county, postal city, zip code
  • A circle defined using latitude, longitude, and radius

This endpoint returns a summary for each matching school and school district.


Endpoints Affected

The following endpoints are impacted by this change

Name Original Endpoint New Endpoint
School Detail /propertyapi/v1.0.0/school/detail /v4/school/profile
School Snapshot /propertyapi/v1.0.0/school/snapshot /v4/school/search

Example

The following call requests school profile data for New Trier Township High School Winnetka (geoIdV4: 68395c88b7a98b5714de7d79d48506ea)

https://api.gateway.attomdata.com/v4/school/profile?geoIdV4=68395c88b7a98b5714de7d79d48506ea
{
    "status": {
        "version": "4",
        "code": 0,
        "msg": "SuccessWithResult",
        "total": 1,
        "page": 1,
        "pageSize": 1,
        "transactionID": "bd93a2e02b355d5c66deb06b959c6e84"
    },
    "school": {
        "location": {
            "geoIdV4": "68395c88b7a98b5714de7d79d48506ea",
            "latitude": 42.0946,
            "longitude": -87.7192,
            "addressLine1": "385 Winnetka Ave",
            "city": "Winnetka",
            "stateCode": "IL",
            "zipCode": "60093",
            "stateFIPs": "17",
            "countyFIPs": "031",
            "countyName": "Cook"
        },
        "detail": {
            "ncesSchoolId": "172820002975",
            "stateSchoolId": "IL-05-016-2030-17-0501620300001",
            "schoolName": "New Trier Township High School Winnetka",
            "phone": "8474467000",
            "schoolUrl": "http://www.newtrier.k12.il.us/",
            "mailAddressLine1": "385 Winnetka Ave",
            "mailCity": "Winnetka",
            "mailStateCode": "IL",
            "mailZipCode": "60093",
            "mailStateFIPs": "17",
            "mailCountyFIPs": "031",
            "mailCountyName": "Cook",
            "institutionType": "Public",
            "schoolType": "Regular",
            "status": "Operational",
            "instructionalLevel": "High",
            "gradeSpanLow": "10",
            "gradeSpanHigh": "12",
            "elementarySchoolInd": "N",
            "middleSchoolInd": "N",
            "highSchoolInd": "Y",
            "eeInd": "N",
            "pkInd": "N",
            "kgInd": "N",
            "transitionalKgInd": "N",
            "transitionalGrade01Ind": "N",
            "grade01Ind": "N",
            "grade02Ind": "N",
            "grade03Ind": "N",
            "grade04Ind": "N",
            "grade05Ind": "N",
            "grade06Ind": "N",
            "grade07Ind": "N",
            "grade08Ind": "N",
            "grade09Ind": "N",
            "grade10Ind": "Y",
            "grade11Ind": "Y",
            "grade12Ind": "Y",
            "ungradedInd": "N",
            "studentCnt": 3040,
            "studentCntRange": "750+",
            "charterInd": "N",
            "acceleratedChristianEducationInd": "N",
            "americanAssocOfChristianSchoolsInd": "N",
            "assocOfChristianSchoolsIntlInd": "N",
            "assocOfChristianTeachersAndSchoolsInd": "N",
            "assocOfClassicalAndChristianSchoolsInd": "N",
            "christianSchoolsIntlInd": "N",
            "councilOfIslamicSchoolsInNorthAmericaInd": "N",
            "evangelicalLutheranEducationAssocInd": "N",
            "friendsCouncilOnEducationInd": "N",
            "generalConferenceOfSeventhDayAdventistChurchInd": "N",
            "islamicSchoolLeagueOfAmericaInd": "N",
            "jesuitSecondaryEducationAssocInd": "N",
            "nationalAssocOfEpiscopalSchoolsInd": "N",
            "nationalCatholicEducationAssocInd": "N",
            "nationalChristianSchoolAssocInd": "N",
            "nationalSocietyOfHebrewDaySchoolsInd": "N",
            "oralRobertsUniversityEducationFellowshipInd": "N",
            "prizmahCenterForJewishDaySchoolsInd": "N",
            "southernBaptistAssocOfChristianSchoolsInd": "N",
            "otherReligiousSchoolAssocsInd": "N",
            "americanMontessoriSocietyInd": "N",
            "assocMontessoriIntlInd": "N",
            "otherMontessoriAssocsInd": "N",
            "assocMilitaryCollegesAndSchoolsInd": "N",
            "assocWaldorfSchoolsOfNorthAmericaInd": "N",
            "nationalAssocOfPrivateSpecialEducationCentersInd": "N",
            "otherAssocsForExceptionalChildrenInd": "N",
            "europeanCouncilForInternationalSchoolsInd": "N",
            "nationalAssocForTheEducationOfYoungChildrenInd": "N",
            "nationalAssocOfLaboratorySchoolsInd": "N",
            "nationalCoalitionOfGirlsSchoolsInd": "N",
            "otherSpecialEmphasisAssocsInd": "N",
            "alternativeSchoolNetworkInd": "N",
            "nationalAssocatiationOfIndependentSchoolsInd": "N",
            "stateOrRegionalIndependentSchoolAssocInd": "N",
            "nationalCoalitionOfAlternativeCommunitySchoolsInd": "N",
            "nationalIndependentPrivateSchoolsAssocInd": "N",
            "theAssocOfBoardingSchoolsInd": "N",
            "otherSchoolAssocsInd": "N",
            "enrollPk": 0,
            "enrollKg": 0,
            "enrollG01": 0,
            "enrollG02": 0,
            "enrollG03": 0,
            "enrollG04": 0,
            "enrollG05": 0,
            "enrollG06": 0,
            "enrollG07": 0,
            "enrollG08": 0,
            "enrollG09": 1,
            "enrollG10": 999,
            "enrollG11": 1006,
            "enrollG12": 1034,
            "enrollUngraded": 0,
            "enrollAm": 8,
            "enrollAsian": 291,
            "enrollHisp": 210,
            "enrollBlack": 13,
            "enrollWhite": 2374,
            "enrollPacific": 6,
            "enrollMultipleRaces": 138,
            "enrollAmPct": 0.26,
            "enrollAsianPct": 9.57,
            "enrollHispPct": 6.91,
            "enrollBlackPct": 0.43,
            "enrollWhitePct": 78.09,
            "enrollPacificPct": 0.2,
            "enrollMultipleRacesPct": 4.54,
            "enrollMale": 1585,
            "enrollFemale": 1455,
            "enrollFreeLunch": 0,
            "enrollReducedLunch": 0,
            "enrollFreeOrReducedLunch": 0,
            "blueRibbonYears": "1991, 2009",
            "urbanCentricCommunityType": "Suburb",
            "urbanCentricLocaleType": "Suburb - Large",
            "apInd": "Y",
            "apArtHistoryInd": "N",
            "apArtStudio2DDesignInd": "Y",
            "apArtStudio3DDesignInd": "Y",
            "apArtStudioDrawingInd": "Y",
            "apBiologyInd": "Y",
            "apCalculusAbInd": "Y",
            "apCalculusBcInd": "Y",
            "apChemistryInd": "Y",
            "apChineseLanguageCultureInd": "Y",
            "apComputerScienceAInd": "Y",
            "apComputerScienceAbInd": "N",
            "apComputerSciencePrinciplesInd": "N",
            "apEconomicsMacroInd": "Y",
            "apEconomicsMicroInd": "Y",
            "apEnglishLanguageCompositionInd": "Y",
            "apEnglishLiteratureCompositionInd": "Y",
            "apEnvironmentalScienceInd": "Y",
            "apEuropeanHistoryInd": "Y",
            "apFrenchLanguageInd": "Y",
            "apFrenchLiteratureInd": "N",
            "apGeographyHumanInd": "N",
            "apGermanLanguageInd": "Y",
            "apGovernmentPoliticsComparativeInd": "Y",
            "apGovernmentPoliticsUsInd": "Y",
            "apItalianLanguageCultureInd": "N",
            "apJapaneseLanguageCultureInd": "Y",
            "apLatinCatullusHoraceInd": "N",
            "apLatinVergilInd": "Y",
            "apMusicTheoryInd": "Y",
            "apPhysics1Ind": "Y",
            "apPhysics2Ind": "Y",
            "apPhysicsBInd": "N",
            "apPhysicsCElectricyMagnetismInd": "Y",
            "apPhysicsCMechanicsInd": "Y",
            "apPsychologyInd": "Y",
            "apResearchInd": "N",
            "apSeminarInd": "N",
            "apSpanishLanguageInd": "Y",
            "apSpanishLiteratureInd": "Y",
            "apStatisticsInd": "Y",
            "apUsHistoryInd": "Y",
            "apWorldHistoryInd": "N",
            "priorYearStudentCnt": 3034,
            "studentYearlyChangeCnt": 6,
            "studentYearlyChangePct": 0.2,
            "schoolRating": "A+",
            "saaInd": "Y",
            "updatedate": "2022-07-04T11:07:58.96"
        },
        "testScores": [
            {
                "year": 2018,
                "subject": "ELA",
                "grade": "11",
                "score": 79.9,
                "institutionType": "School"
            },
            {
                "year": 2018,
                "subject": "Math",
                "grade": "11",
                "score": 76.6,
                "institutionType": "School"
            }
        ],
        "district": {
            "schoolDistrictGeoId": "efcc419cb0e9a00619645cd787fe2dd6",
            "schoolDistrictName": "New Trier Township High School District 203",
            "latitude": 42.090091,
            "longitude": -87.764688,
            "phone": "8477846109",
            "addressLine1": "7 Happ Rd",
            "city": "Northfield",
            "stateCode": "IL"
        }
    }
}

Migration Process

The following outlines the series of steps necessary to upgrade applications from previous versions of school endpoints. It is important these changes be made as soon as possible as the older versions are being deprecated. It is likely that the older versions will stop working after June 30, 2023. Please plan accordingly.

1

Identify calls to Endpoints

Identify all the places in your code in which a call is made to any of the two school endpoints: -

  • /propertyapi/v1.0.0/school/detail
  • /propertyapi/v1.0.0/school/snapshot
2

Identify calls to other endpoints

Identify any other calls to ATTOM API that might be generating geocodes (geoid) that are used in calls to the school endpoints.

3

Change endpoint path

The endpoint paths should be changed to v4 (or higher) and the endpoint names should be mapped to the new names.

Original Endpoint New Endpoint
/propertyapi/v1.0.0/school/detail /v4/school/profile
/propertyapi/v1.0.0/school/snapshot /v4/school/search
4

Make changes to business logic

Check the attached spreadsheet to determine if any of the fields returned are listed as having changed in some way. If they are, you will need to adjust the application's business logic to reflect the nature of the change. 

School-Migration-Kit.xlsx

The following is a summary of the options provided in the above spreadsheet for each field


Category

Action
Number of Fields
Name Change Only Change logic to extract value from the endpoint using the new field name 48
Field Value Change Change logic and/or display to match the new format of the data 10
School District Make a separate call to the school district 6
Removed Field No equivalent is available. Evaluate the option of removing data from display or calculations 33
New field Decide if you wish to take advantage (at this time) of the many new fields added. 125
     
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.