Retrieving results - Amazon Mechanical Turk

Retrieving results

Retrieving the results of a HIT involves gathering the responses from each of the assignment submissions provided by workers. At any point in a HIT's lifecycle (before it is disposed) you can call the ListAssignmentsForHIT operation to retrieve all of assignments that have been submitted and the answers provided by workers. If the some of the assignments are still awaiting submission by workers, you receive partial results containing the assignments have been submitted so far.

Assignment attributes

The ListAssignmentsForHIT operation returns an array of zero or more assignments, each captured in an Assignment data structure. The following example shows the data structure that is returned. Each assignment includes the ID of the HIT with which it's associated, the worker who submitted it, and the ID of the assignment itself. The AssignmentStatus is one of Submitted, Approved, or Rejected. When a worker first submits an assignment, the status is Submitted, and changes based on your decision to approve or reject the assignment.

{      AssignmentId: "123RVWYBAZW00EXAMPLE456RVWYBAZW00EXAMPLE",      WorkerId:"AZ3456EXAMPLE",      HITId:"123RVWYBAZW00EXAMPLE",      AssignmentStatus:"Submitted",      AcceptTime: "2019-12-01T12:00:00Z",      SubmitTime: "2019-12-01T13:04:59Z",      AutoApprovalTime: "2019-12-04T13:04:59Z",      Answer:'...'   }  

The AcceptTime and SubmitTime indicate when a worker first accepted the task and when they submitted it. This can be used to infer a rough approximation of how long it took the worker to complete the task; however, keep in mind that a worker may step away from their computer for a period of time after accepting a task so the time delta may be inflated.

The AutoApprovalTime indicates when the assignment will be automatically approved if you don't approve or reject it yourself. This is computed by adding the auto-approval delay you set when creating the HIT to the SubmitTime.

Assignment answer

The Answer value is returned as a string containing a QuestionFormAnswers XML data structure. The layout of this data structure corresponds to the HTML form fields you provided in your question HTML. For example, consider the following task form using a standard HTML form element and form field.

<form method='post' id='mturk_form' action=''>   <p>What country do you live in?</p>   <p><input type="text" name="country"></p>   <p>Describe the current weather where you live</p>   <p><textarea name="weather" cols="80" rows="3"></textarea></p>   <p><input type="submit" id="submitButton" class="btn btn-primary" value="Submit"/></p> </form>  

The QuestionFormAnswers data structure contains an Answer value for each form field in your HTML. The QuestionIdentifier is the name supplied for the form field in your HTML and the FreeText attribute is the value that was entered in the field by the worker. Here the QuestionIdentifier values country and weather match the names specified in the form definition. The FreeText values contain the worker's responses.

<?xml version="1.0" encoding="ASCII"?> <QuestionFormAnswers xmlns="">   <Answer>     <QuestionIdentifier>country</QuestionIdentifier>     <FreeText>United States</FreeText>   </Answer>   <Answer>     <QuestionIdentifier>weather</QuestionIdentifier>     <FreeText>It's currently raining lightly</FreeText>   </Answer> </QuestionFormAnswers>  

Assignment Answer when using crowd-form

The structure of the answers returned in the QuestionFormAnswer data structure is slightly different when using the crowd-form element from the Crowd HTML Elements library. Consider the following example that mirrors the preceding one, but replaces form with crowd-form.

<crowd-form>   <p>What country do you live in?</p>   <p><input type="text" name="country"></p>   <p>Describe the current weather where you live</p>   <p><textarea name="weather" cols="80" rows="3"></textarea></p> </ crowd-form>  

The crowd-form element collapses all of the form field values into a single Answer value in the QuestionFormAnswer data structure as shown in the following example. This answer always has the identifier taskAnswers and the FreeText value is an array of JSON key-value pairs containing the worker answers.

<?xml version="1.0" encoding="ASCII"?> <QuestionFormAnswers xmlns="">   <Answer>     <QuestionIdentifier>taskAnswers</QuestionIdentifier>     <FreeText>       [         {           "country": "United States",           "weather": "It's currently raining lightly"         }       ]     </FreeText>   </Answer> </QuestionFormAnswers>