skyscrapeapi 3.0.0+25

  • Readme
  • Changelog
  • Example
  • Installing
  • 72

SkyScrapeAPI #

Build Status GitHub Discord

SkyScrapeAPI enables developers to easily access a variety of Skyward information.

Features #

  • Gradebook Access
  • Assignment Details
  • Academic History
  • Student Information

Project Showcase #

  • SkyMobile: Cross-platform alternative Skyward client
  • skycord: Skyward-integrated Discord bot

If you think your project would fit up here, join the Discord server and show us!

Contributing #

We welcome pull requests from anyone with interest in this project. If you find a bug or have any questions, raise an issue or ask us on the Discord server.

[3.0.0+25] - Parenthesis Bug #

Fixed weird extra parenthesis in the beginning of the term attribute in quick assignments Changed gbID to courseID.

[3.0.0+22] - Better Account Initialization #

If your account is a student account. The API will automatically try to initialize your account when any menu is clicked! 22 fixed a bug where there was huge spaces after!

[3.0.0+16] - Bug Fix #

Deleted old changelogs cause they were too repetitive. Nothing major will happen with the API until version 4.

Some things that were changed:

  • Changed the list of Nodes into a Gradebook object
  • Added Class Object
  • Removed some unnecessary objects
  • Changed assignment to assignment page
  • More data type refactoring
  • Added more information to assignments, like exact weights, in extra information if they are found
  • [14] Added a find grade from term in the datatype class
  • [15] Fixed bug on reversal of time period and course name
  • [16] Fixed bug where last category header would not show up!
  • [17] Attempted to fix bug where history would sometimes bring null values!

[2.3.6+2] - Bug Fix #

Fixed dependencies

[2.3.6+1] - Bug Fix #

When grade bookk init gets a district not supported error. It'll try again, because this may be caused by a website session that has been inactive for too long.

[2.3.5+3] - Assignment Info DataType getUIMessage #

Now detects and puts a colon in the message if there is none.

[2.3.5+2] - Fixed Comment Support #

Assignment info comment support.

[2.3.5+1] - Added Comment Support #

Assignment info comment support.

[2.3.4+1] - Code Speed Up #

Added a long lost if statement that reduced speed of getting gradebook.

Tests were performed on decent internet.

One action : 7s 645 ms -> 4s 984ms Three actions : 21 s -> 14 s

[2.3.3+1] - Final Bug Fix #

Finally fixed all bugs for messages for all districts by searching through all div's.

[2.3.2+2] - More Bug Fix #

Fix bug of insertion.

[2.3.2+1] - More Bug Fix #

Split's the text and inserts link in there.

[2.3.1+1] - Bug Fix #

Fixed bug where there was duplicate links.

[2.3.0+2] - Windows Retarded #


[2.3.0+1] - Messages #

Added messages retrieval with attachments and hyperlinks.

  • Gets messages from Skyward
  • Retrieves attachments and attempts to keep formatting
  • Moved messages to a new method because of the sheer slowness

[2.2.1+2] - Retrieval of Current User #

Retrieve current user

[2.2.1+1] - User Name #

Added getting the logged-in user's name.

  • Adds more documentation
  • Makes more variables private for security purposes
  • Refactor of lib/src files to fit dart naming convention

[2.2.0+1] - Parental Account Support #

Added support for parent accounts with initializing accounts.

  • Better documentation will be provided later.

[2.1.0+3] - Small addition for maintenance checking #

Will return text of the error if maintenance is returned

[2.1.0+1] - Fix Github Retardation #

HUGE GLOW-UP (Refactor)

  • Removed duplicate code
  • Moved files around
  • Removed unnecessary code

[2.0.0+2] - Fix Github Retardation #

No description needed.

[2.0.0+1] - Server Implementation #

Added quick retrieval of assignments in the grade book.

  • Added new data type that allows you to store assignments from the grade book
  • Made for servers
  • Retrieves post-able assignment, grade, and term the grade is from

[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/data_types.dart';
import 'package:skyscrapeapi/sky_core.dart';
import 'dart:io';

void main() async {
  final skyward =
  var file = File('test/testCredentials.txt');
  var contents;
  var terms;
  var gradebook;
  User person;

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

    person = await SkyCore.login(split[0], split[1], skyward);

  try {
    gradebook = await person.getGradebook();
  } catch (e) {
    print('Should not fail: ' + e.toString());
    throw SkywardError('SHOULD SUCCEED');

  try {
    List<AssignmentProperty> props =
        (await person.getAssignmentDetailsFrom(gradebook.quickAssignments[0]));
  } catch (e) {
    print('Should succeed: ${e.toString()}');
    throw SkywardError('SHOULD SUCCEED');

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

  print(await person.getHistory());

Use this package as a library

1. Depend on it

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

  skyscrapeapi: ^3.0.0+25

2. Install it

You can install packages from the command line:

with pub:

$ pub get

with Flutter:

$ flutter pub get

Alternatively, your editor might support pub get or 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/data_types.dart';
import 'package:skyscrapeapi/district_searcher.dart';
import 'package:skyscrapeapi/sky_core.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 Mar 28, 2020, and provided a score, details, and suggestions below. Analysis was completed with status completed using:

  • Dart: 2.7.1
  • pana: 0.13.6

Health suggestions

Fix lib/sky_core.dart. (-10.44 points)

Analysis of lib/sky_core.dart reported 22 hints, including:

line 20 col 20: Use = to separate a named parameter from its default value.

line 21 col 35: Use = to separate a named parameter from its default value.

line 22 col 23: Use = to separate a named parameter from its default value.

line 84 col 7: DO use curly braces for all flow control structures.

line 90 col 7: DO use curly braces for all flow control structures.

Fix lib/src/student_related/message.dart. (-2.96 points)

Analysis of lib/src/student_related/message.dart reported 6 hints, including:

line 38 col 14: Use isNotEmpty instead of length

line 50 col 13: Use isNotEmpty instead of length

line 57 col 17: DO use curly braces for all flow control structures.

line 59 col 17: DO use curly braces for all flow control structures.

line 84 col 11: Use isEmpty instead of length

Fix lib/data_types.dart. (-1.99 points)

Analysis of lib/data_types.dart reported 4 hints:

line 290 col 7: DO use curly braces for all flow control structures.

line 292 col 7: DO use curly braces for all flow control structures.

line 633 col 7: DO use curly braces for all flow control structures.

line 635 col 7: DO use curly braces for all flow control structures.

Fix additional 6 files with analysis or formatting issues. (-8.96 points)

Additional issues in the following files:

  • lib/src/gradebook/assignment.dart (4 hints)
  • lib/src/student_related/student_info.dart (4 hints)
  • lib/src/skyward_utils.dart (3 hints)
  • lib/src/student_related/history.dart (3 hints)
  • lib/district_searcher.dart (2 hints)
  • lib/src/gradebook/gradebook.dart (2 hints)


Package Constraint Resolved Available
Direct dependencies
Dart SDK >=2.1.0 <3.0.0
html ^0.14.0+2 0.14.0+3
http ^0.12.0+2 0.12.0+4
Transitive dependencies
async 2.4.1
charcode 1.1.3
collection 1.14.12
csslib 0.16.1
http_parser 3.1.4
meta 1.1.8
path 1.6.4
pedantic 1.9.0
source_span 1.7.0
string_scanner 1.0.5
term_glyph 1.1.0
typed_data 1.1.6
Dev dependencies
test ^1.8.0