skyscrapeapi 1.2.0+3

  • Readme
  • Changelog
  • Example
  • Installing
  • new68

SkyScrapeAPI #

SkyMobile API is the API that was taken from the original SkyMobile app.

SkyMobile API allows easy Skyward access for developers.

Quick Start Guide #

To start, you must have already included skyscrapeapi in your pubspec.yaml file.

Next, you must import the following.

    import 'package:skyscrapeapi/skywardAPICore.dart';
    import 'package:skyscrapeapi/skywardAPITypes.dart';

Importing SkywardAPITypes is optional, though it helps immensely with managing types and avoiding errors with your code.

Some of the most important methods you need to know are listed below.

  • getSkywardAuthenticationCodes
  • getGradeBookTerms
  • getGradeBookGrades
  • getAssignmentsFromGradeBox
  • getAssignmentInfoFromAssignment
  • getHistory

These are essential functions that will navigate through Skyward and return SkyScrapeAPI types.

An example of all this code would be located here.

More information can be provided by the documentation generated by flutter.

If you find a bug or have any questions, please contact me at my email:

[1.2.0+3] - Time Stamp Fix


[1.2.0+2] - Time Stamp Fix

OOPS, Windows is retarded.

[1.2.0+1] - Comparable School Years

Make SchoolYears and Class comparable and sortable.

  • SchoolYear == operator compares list of classes it has
  • SchoolYear hashCode is the description hash code
  • Class == operator and hashCode are both class name

[1.1.1+2] - Bug Fix Revision 2

Not only has a more loose session expired check. Will now refresh.

[1.1.1+1] - Bug Fix

Changed how didSessionExpire worked so it will (should at least) detect timeouts (hopefully).

[1.1.0+3] - Bug Fix

Fixed bug that caused second login to grade book of the same API object would fail.

  • Made Grade Book accessor values non static
  • Made initgradebook return list

[1.1.0+2] - Dev Test


[1.1.0+1] - Refresh Rate Update

To give the developer more flexibility over skyscrapeapi.

This update gives more power to the developer and allows for developers to relax more.

  • Refresh rates will now affect skyward log-ins
  • The developer can now choose IF they want to refresh skyward authentication automatically
  • Testing files now have settings testSettings.skyTest

[1.0.1+3] - Maintenance Update

Added an example for developers to use in case they do not understand the documentation.

Reformatted all files to fit flutter's requests.

[1.0.1+2] - Organization Update

Minor update for renaming and organizing library stuff.

[1.0.1+1] - Documentation Update

Documentation is now available for developers to view.

[1.0.0+1] - First Official Pub Release

I am confident now in my code and the errors it produces. The API tester code has been finished.

[0.0.1+2] - Rename to Camel Case

Like the title, rename files to Camel Case

[0.0.1] - Initial Release

SkyScrapeAPI is a dart API that allows you to login and pull data from Skyward. SkyScrapeAPI was separated from the original SkyMobile app to allow the API to develop separately from the main app.

SkyScrapeAPI will restart at 0.0.1.



  • Allows for error checking


  • Fixed bug where JSON Saver couldn't save ClassLevel


  • Removed unnecessary 4.0 GPA Credit attribute


  • Fixed bug where duplicate SchoolYears were returned.


  • Modified History Scraper and Data Types to support json saving.


  • Added History Scraper. Allows you to scrape from sfacademichistory001.w.


  • Adressed major bug which prevented users from Highland Park ISD from logging in. This should fix logging in bugs for all districts with wsEAplus in their url link name.


  • Remade Assignment scraping algorithm to support more districts.


  • Adds DistrictSearcher to search for districts family access links.


  • Fixed bug where assignments with the same name would display the same details: THIS BUG AFFECTS SKYMOBILE iOS AND WILL NOT BE FIXED FOR SKYMOBILE iOS


  • Can scrape assignment details.


  • Build the basic foundation. Initial release.
  • Can scrape gradebook and assignments.


import 'package:skyscrapeapi/skywardAPICore.dart';
import 'package:skyscrapeapi/skywardUniversal.dart';
import 'dart:io';

void main() async {
  final skyward = SkywardAPICore(
  var file = File('test/testCredentials.txt');
  var contents;
  var terms;
  var gradeBook;
  var assignment;

  int indexOfTestingGradeBook = 1;
  int indexOfTestingAssignment = 4;

  if (await file.exists()) {
    contents = await file.readAsString();
    List split = contents.toString().split('\n');

    if (!await skyward.getSkywardAuthenticationCodes(split[0], split[1])) {
      throw SkywardError('OH POOP WE FAIL TO LOG IN PLZ FIX BUG');

  try {
    terms = (await skyward.getGradeBookTerms());
  } catch (e) {
    print('Should not fail: ' + e);
    throw SkywardError('SHOULD SUCCEED');

  try {
    gradeBook = await skyward.getGradeBookGrades(terms);
  } catch (e) {
    print('Should not fail: ' + e.toString());
    throw SkywardError('SHOULD SUCCEED');

  try {
    assignment = (await skyward.getAssignmentsFromGradeBox(gradeBook[indexOfTestingGradeBook]));
  } catch (e) {
    print('Should succeed: ${e.toString()}');
    throw SkywardError('SHOULD SUCCEED');

  try {
    print(await skyward.getAssignmentInfoFromAssignment(assignment[indexOfTestingAssignment]));
  } catch (e) {
    print('Should succeed: ${e.toString()}');
    throw SkywardError('SHOULD SUCCEED');

  try {
    print(await skyward.getHistory());
  } catch (e) {
    print('Should succeed: ${e.toString()}');
    throw SkywardError('SHOULD SUCCEED');

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

  skyscrapeapi: ^1.2.0+3

2. Install it

You can install packages from the command line:

with Flutter:

$ flutter pub get

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:skyscrapeapi/skywardAPICore.dart';
import 'package:skyscrapeapi/skywardAPITypes.dart';
import 'package:skyscrapeapi/skywardDistrictSearcher.dart';
import 'package:skyscrapeapi/skywardUniversal.dart';
Describes how popular the package is relative to other packages. [more]
Code health derived from static analysis. [more]
Reflects how tidy and up-to-date the package is. [more]
Weighted score of the above. [more]
Learn more about scoring.

We analyzed this package on Oct 14, 2019, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.5.1
  • pana: 0.12.21
  • Flutter: 1.9.1+hotfix.4


Detected platforms: Flutter

References Flutter, and has no conflicting libraries.

Health suggestions

Format lib/skywardAPICore.dart.

Run flutter format to format lib/skywardAPICore.dart.

Format lib/skywardUniversal.dart.

Run flutter format to format lib/skywardUniversal.dart.

Format lib/src/gradebookAccessor.dart.

Run flutter format to format lib/src/gradebookAccessor.dart.


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=1.19.0 <3.0.0
flutter 0.0.0
html ^0.14.0+2 0.14.0+3
http ^0.12.0+2 0.12.0+2
Transitive dependencies
async 2.4.0
charcode 1.1.2
collection 1.14.11 1.14.12
csslib 0.16.1
http_parser 3.1.3
meta 1.1.7
path 1.6.4
pedantic 1.8.0+1
sky_engine 0.0.99
source_span 1.5.5
string_scanner 1.0.5
term_glyph 1.1.0
typed_data 1.1.6
vector_math 2.0.8
Dev dependencies
test ^1.8.0