[Tex/LaTex] Citing websites in APA style with Zotero

apa-stylebibtexnatbibzotero

Using natbib and apa-good as style, I am having problems displaying a citation of type website or blog post.

\usepackage{natbib}    
\bibliographystyle{apa-good}
\bibliography{msc_thesis}

Test \citep{schroeder_facebook_2012}

msc_thesis.bib contains, when taking the metadata directly from a website using Zotero:

@misc{schroeder_facebook_2012,
    title = {Facebook Hits One Billion Active Users},
    url = {http://mashable.com/2012/10/04/facebook-one-billion/},
    abstract = {Facebook just officially reached one billion active users, Facebook {CEO} and co-founder Mark Zuckerberg has announced.},
    urldate = {2013-07-17},
    journal = {Mashable},
    author = {Schroeder, Stan},
    month = oct,
    year = {2012},
}

APA style should be, according to http://www.studygs.net/citation.htm:

Author. (Date published if available; n.d.–no date– if not). Title of article. Title of web site . Retrieved date. From URL.

But what I get is:

Schroeder, S. (2012). Facebook hits one billion active users.

I don't know whether apa-good is a "good" choice, it has always worked well for other type of media.

Best Answer

A biblatex solution

As I mentioned in the comments, Mico's answer to Internet citation using APA points out that apa-good.bst requires the url. But since the apa-good.bst style I found didn't produce the output you're expecting, I'd suggest biblatex, which has an APA style (called biblatex-apa).

\documentclass{article}
\begin{filecontents}{\jobname.bib}
@misc{schroeder_facebook_2012,
  title = {Facebook Hits One Billion Active Users},
  url = {http://mashable.com/2012/10/04/facebook-one-billion/},
  abstract = {Facebook just officially reached one billion active users, Facebook {CEO} and co-founder Mark Zuckerberg has announced.},
  urldate = {2013-07-17},
  journal = {Mashable},
  author = {Schroeder, Stan},
  month = oct,
  year = {2012},
}
\end{filecontents}
\usepackage[american]{babel}
\usepackage{csquotes}
\usepackage[style=apa,backend=biber]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{\jobname.bib}
\begin{document}
\parencite{schroeder_facebook_2012}
\printbibliography
\end{document}

biblatex-apa example

Although the output is the same, a more adequate entry type in biblatex would be @online (notice also the date field):

@online{schroeder2012,
  title = {Facebook Hits One Billion Active Users},
  url = {http://mashable.com/2012/10/04/facebook-one-billion/},
  abstract = {Facebook just officially reached one billion active users, Facebook {CEO} and co-founder Mark Zuckerberg has announced.},
  urldate = {2013-07-17},
  journal = {Mashable},
  author = {Schroeder, Stan},
  date = {2012-10},
}

N.B. According to the manual (ยง1, "Important Changes"), biblatex-apa relies on the usage of biber instead of bibtex as the backend (It's the default behavior of biblatex, but I added the corresponding option to the MWE to make it clear).

About moving to biblatex, I'd suggest the following questions: