About this Project

SciBowlDB aggregates DOE High School Science Bowl questions from numerous online and offline sources to create a comprehensive, searchable database of high-quality questions for study and practice. Currently, 7291 pairs of toss-up and bonus questions are publicly available, and have separated into question and answer text as well as categorized by format, subject, and source. The original question sources include the official sample question sets, the CSUB Regionals question set, and the 1998 & 2005 Nationals question sets as compiled by New England Science Bowl.

You can use the "Play" tab to quiz yourself on random questions in a certain category or to provide a continuous source of questions for team tryouts or practices. "Browse" can be used to search for all questions meeting certain criteria for in-depth study of a certain subject. "Round" is useful for generating full, 25-question practice rounds that can be used in team practices or invitationals. If you see any formatting errors or incorrect answers on a question, please report the relevant question for review.

You can also use keyboard shortcuts to navigate this website. In play mode, pressing enter, space, n, , or will show the answer and then advance to the next question. In browse mode, pressing enter, space, n, , or will scroll down to the next question on the page, while pressing p, , or will scroll up to the previous question.

Using the SciBowlDB API

Currently, SciBowlDB has two API endpoints, at /api/questions and at /api/questions/random.

You can send a GET request to /api/questions to get a JSON object containing a list of all the questions in the database. The object will have the following format:

  "questions": [{
      "api_url": "API URL of question", 
      "bonus_answer": "BONUS ANSWER", 
      "bonus_format": "Short Answer/Bonus", 
      "bonus_question": "Bonus question text"
      "category": "CATEGORY", 
      "id": question number, 
      "source": "Source of question", 
      "tossup_answer": "TOSSUP ANSWER", 
      "tossup_format": "Short Answer/Bonus", 
      "tossup_question": "Tossup question text"
      "uri": "permalink to question"
    }, etc. ]

Sending a GET request to /api/questions/random will similarly return a JSON object, containing one random question in the database.

To filter what categories or sources of questions can be returned, you can send a POST request to one of these endpoints. You can specify which categories of questions may be included by adding a list of categories to the JSON body of the POST request. Categories may be one or more of the following:

  "categories": [

You can also specify which sources of questions may be included by adding a list of sources to the JSON body of the POST request. The API will return all questions that begin with the name of the source listed. For example:

curl -H "Content-type: application/json" \
     -d '{"sources": ["Official", "CSUB"]}' \

will return all questions whose source names begin with "Official" or "CSUB", including "Official-set1-round1", "CSUB-round4", and "Official-set4-round10". The same POST request body sent to the /api/questions/random endpoint would return a random question following the same restrictions. The top-level sources are:

  "sources": [