Q:

Expected BEGIN_ARRAY but was BEGIN_OBJECT after retrofit call

I know this was asked a lot before but i cannot find a solution in my case. 
I am requesting for a json response about a list of POJO (Movie)
While this is my first time using retrofit i have the problem in the title. The url i am building is right and below is a sample of the response:
{  
   "page":1,
   "total_results":19850,
   "total_pages":993,
   "results":[  
      {  
         "vote_count":855,
         "id":420817,
         "video":false,
         "vote_average":7.2,
         "title":"Aladdin",
         "popularity":445.349,
         "poster_path":"\/3iYQTLGoy7QnjcUYRJy4YrAgGvp.jpg",
         "original_language":"en",
         "original_title":"Aladdin",
         "genre_ids":[  
            12,
            14,
            10749,
            35,
            10751
         ],
         "backdrop_path":"\/v4yVTbbl8dE1UP2dWu5CLyaXOku.jpg",
         "adult":false,
         "overview":"A kindhearted street urchin named Aladdin embarks on a magical adventure after finding a lamp that releases a wisecracking genie while a power-hungry Grand Vizier vies for the same lamp that has the power to make their deepest wishes come true.",
         "release_date":"2019-05-22"
      },
      {  
         "vote_count":5224,
         "id":299537,
         "video":false,
         "vote_average":7.1,
         "title":"Captain Marvel",
         "popularity":399.859,
         "poster_path":"\/AtsgWhDnHTq68L0lLsUrCnM7TjG.jpg",
         "original_language":"en",
         "original_title":"Captain Marvel",
         "genre_ids":[  
            28,
            12,
            878
         ],
         "backdrop_path":"\/w2PMyoyLU22YvrGK3smVM9fW1jj.jpg",
         "adult":false,
         "overview":"The story follows Carol Danvers as she becomes one of the universe’s most powerful heroes when Earth is caught in the middle of a galactic war between two alien races. Set in the 1990s, Captain Marvel is an all-new adventure from a previously unseen period in the history of the Marvel Cinematic Universe.",
         "release_date":"2019-03-06"
      },

This is my model
public class Movie implements Parcelable {

@PrimaryKey(autoGenerate = true)
private int id;
private String title;
private String releaseDate;
private String moviePoster;
private String avgVote;
private String plot;
private String movieId;
private String movieGenre;

@Ignore
public Movie(String title, String releaseDate, String moviePoster, String avgVote, String plot, String movieId, String movieGenre) {

    this.title = title;
    this.releaseDate = releaseDate;
    this.moviePoster = moviePoster;
    this.avgVote = avgVote;
    this.plot = plot;
    this.movieId = movieId;
    this.movieGenre = movieGenre;
}

public Movie(int id, String title, String releaseDate, String moviePoster, String avgVote, String plot, String movieId, String movieGenre) {

    this.id = id;
    this.title = title;
    this.releaseDate = releaseDate;
    this.moviePoster = moviePoster;
    this.avgVote = avgVote;
    this.plot = plot;
    this.movieId = movieId;
    this.movieGenre = movieGenre;

}

public String getMovieGenre() {
    return movieGenre;
}

public void setMovieGenre(String movieGenre) {
    this.movieGenre = movieGenre;
}

public int getId() {
    return id;
}

public void setId(int mID) {
    this.id = mID;
}

public String getTitle() {
    return title;
}

public void setTitle(String title) {
    this.title = title;
}

public String getReleaseDate() {
    return releaseDate;
}

public void setReleaseDate(String releaseDate) {
    this.releaseDate = releaseDate;
}

public String getMoviePoster() {
    return moviePoster;
}

public void setMoviePoster(String moviePoster) {
    this.moviePoster = moviePoster;
}

public String getAvgVote() {
    return avgVote;
}

public void setAvgVote(String avgVote) {
    this.avgVote = avgVote;
}

public String getPlot() {
    return plot;
}

public void setPlot(String plot) {
    this.plot = plot;
}

public String getMovieId() {
    return movieId;
}

public void setMovieId(String movieId) {
    this.movieId = movieId;
}

protected Movie(Parcel in) {
    title = in.readString();
    releaseDate = in.readString();
    moviePoster = in.readString();
    avgVote = in.readString();
    plot = in.readString();
    movieId = in.readString();
    movieGenre = in.readString();
}

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
    dest.writeString(title);
    dest.writeString(releaseDate);
    dest.writeString(moviePoster);
    dest.writeString(avgVote);
    dest.writeString(plot);
    dest.writeString(movieId);
    dest.writeString(movieGenre);
}

@SuppressWarnings("unused")
public static final Parcelable.Creator<Movie> CREATOR = new Parcelable.Creator<Movie>() {
    @Override
    public Movie createFromParcel(Parcel in) {
        return new Movie(in);
    }

    @Override
    public Movie[] newArray(int size) {
        return new Movie[size];
    }
};

}
My @GET
public interface JsonPlaceHolderApi {

    @GET("popular")
    Call<List<Movie>> getMovies(@Query("api_key") String api_key);
}

my data request class
private static final String LOG_TAG = DataRequest.class.getSimpleName();

    ArrayList<Movie> mMovies = null;
    String jsonResponse = "";

    private DataInterface mListener;

    public DataRequest() {
        super();
    }

    public void  getData(String url)  {

        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(Constants.BASE_MOVIE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build();

        JsonPlaceHolderApi jsonPlaceHolderApi = retrofit.create(JsonPlaceHolderApi.class);
        Call<List<Movie>> call = jsonPlaceHolderApi.getMovies(Constants.API_KEY);

        call.enqueue(new Callback<List<Movie>>() {
            @Override
            public void onResponse(Call<List<Movie>> call, Response<List<Movie>> response) {

               if(response!=null && response.body()!=null && mListener!=null){

                   mListener.responseData(response.body());
               }
            }
            @Override
            public void onFailure(Call<List<Movie>> call, Throwable t) {
                Log.d(LOG_TAG, "response code throwable " + t);
            }
        });
    }

    public void setOnDataListener(DataInterface listener) {
        mListener = listener;
    }

    public interface DataInterface {
        void responseData( List<Movie> myResponse );
    }
}

And finally what im trying to do in my mainactivity
prefSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                userOption = prefSpinner.getSelectedItem().toString();
                Log.d(LOG_TAG, "user option is "+ userOption);
                if (userOption.contentEquals("Most Popular") || userOption.contentEquals("Highest Rated")) {

                    DataRequest dataRequest = new DataRequest();
                    dataRequest.setOnDataListener(new DataRequest.DataInterface() {
                        @Override
                        public void responseData(List<Movie> myResponse) {
                            mMoviesList = myResponse;
                        }
                    });
                            dataRequest.getData(userOption);
                    movieRecycleViewAdapter.swapData(mMoviesList);

                } else if(userOption.contentEquals("Favorites")) {
                    setUpViewModel();
                    movieRecycleViewAdapter.notifyDataSetChanged();
                }
            }

A:

I am requesting for a json response about a list of POJO (Movie)

No, you are not. If you look at your JSON output, it is a JSON object, not a JSON array. It contains a JSON array in its results property.
You need to:

Create a Java class that matches the JSON object structure (which will include a List<Movie> results field)
Change Retrofit to return Call<...> where ... is whatever you call the Java class that you created in the preceding bullet

